Spark on YARNnode
YARN概述網絡
YARN是什麼架構
Apache Hadoop YARN(Yet Another Resource Negotiator,另外一種資源協調者)是一種新的 Hadoop 資源管理器,它是一個通用資源管理系統,可爲上層應用提供統一的資源管理和調度,它的引入爲集羣在利用率、資源統一管理和數據共享等方面帶來了巨大好處。app
YARN在Hadoop生態系統中的位置框架
YARN產生的背景oop
隨着互聯網高速發展致使數據量劇增,MapReduce 這種基於磁盤的離線計算框架已經不能知足應用要求,從而出現了一些新的計算框架以應對各類場景,包括內存計算框架、流式計算框架和迭代式計算框架等,而MRv1 不能支持多種計算框架並存。學習
YARN基本架構spa
ResourceManager(RM)server
ResourceManager負責集羣資源的統一管理和調度,承擔了 JobTracker 的角色,整個集羣只有「一個」,總的來講,RM有如下做用:blog
NodeManager(NM)
NodeManager管理YARN集羣中的每一個節點。NodeManager 提供針對集羣中每一個節點的服務,從監督對一個容器的終生管理到監視資源和跟蹤節點健康。MRv1 經過slot管理 Map 和 Reduce 任務的執行,而 NodeManager 管理抽象容器,這些容器表明着可供一個特定應用程序使用的針對每一個節點的資源。NM有如下做用
ApplicationMaster(AM)
每一個應用有一個,負責應用程序的管理 。ApplicationMaster 負責協調來自 ResourceManager 的資源,並經過 NodeManager 監視容器的執行和資源使用(CPU、內存等的資源分配)。請注意,儘管目前的資源更加傳統(CPU 核心、內存),但將來會支持新資源類型(好比圖形處理單元或專用處理設備)。AM有如下做用:
Container
Container 是 YARN 中的資源抽象,它封裝了某個節點上的多維度資源,如內存、CPU、磁盤、網絡等,當AM向RM申請資源時,RM爲AM返回的資源即是用Container表示的。YARN會爲每一個任務分配一個Container,且該任務只能使用該Container中描述的資源。Container有如下做用:
Spark on YARN運行架構解析
回顧Spark基本工做流程
以SparkContext爲程序運行的總入口,在SparkContext的初始化過程當中,Spark會分別建立DAGScheduler做業調度和TaskScheduler任務調度兩級調度模塊。其中做業調度模塊是基於任務階段的高層調度模塊,它爲每一個Spark做業計算具備依賴關係的多個調度階段(一般根據shuffle來劃分),而後爲每一個階段構建出一組具體的任務(一般會考慮數據的本地性等),而後以TaskSets(任務組)的形式提交給任務調度模塊來具體執行。而任務調度模塊則負責具體啓動任務、監控和彙報任務運行狀況。
YARN standalone/YARN cluster
YARN standalone/YARN cluster
Spark Driver首選做爲一個ApplicationMaster在Yarn集羣中啓動,客戶端提交給ResourceManager的每個job都會在集羣的worker節點上分配一個惟一的ApplicationMaster,由該ApplicationMaster管理全生命週期的應用。由於Driver程序在YARN中運行,因此事先不用啓動Spark Master/Client,應用的運行結果不能再客戶端顯示(能夠在history server中查看)
YARN standalone/YARN cluster
YARN client
YARN client
在Yarn-client模式下,Driver運行在Client上,經過ApplicationMaster向RM獲取資源。本地Driver負責與全部的executor container進行交互,並將最後的結果彙總。結束掉終端,至關於kill掉這個spark應用。通常來講,若是運行的結果僅僅返回到terminal上時須要配置這個。
如何選擇
其餘配置和注意事項
如何更改默認配置
環境變量
相關配置
特別注意
以上就是博主爲你們介紹的這一板塊的主要內容,這都是博主本身的學習過程,但願能給你們帶來必定的指導做用,有用的還望你們點個支持,若是對你沒用也望包涵,有錯誤煩請指出。若有期待可關注博主以第一時間獲取更新哦,謝謝!同時也歡迎轉載,但必須在博文明顯位置標註原文地址,解釋權歸博主全部!