Yarn2 基本架構
Yarn 基本架構
更多整理都在我的github上:Auraros歡迎大家。
Yarn是Hadoop2.0中的資源管理系統,它的基本設計思想是將MRv1中的JobTracker拆分成兩個獨立的服務,一個全域性的資源管理器RescourceManager 和每個應用程式特有的ApplicationMaster。
Yarn總體上依然是Mater/Slave結構,在這裡,ResourceManager負責對各個NodeManager上的資源進行統一的管理和排程。當用戶提交一個程式時,需要提供一個跟蹤和管理這個程式的ApplicationMaster。
ResourceManager(RM)
RM是一個全域性的資源管理器,負責整個系統的資源管理和分配,主要由兩個元件構成:排程器(Scheduler)和應用程式管理器(Application Manager,ASM)
排程器
排程器僅根據各個應用程式的資源需求進行資源分配,而資源分配單位用一個抽象概念“資源容器”(Resource Container,簡稱Container),Contaioner是一個動態資源分配單位,它將記憶體、CPU、磁碟、網路等資源封裝在一起,從而限定每個任務使用的資源量。使用者可以根據自己的需求進行排程器的更改。
應用程式管理器
應用程式負責管理整個系統中所有應用程式,包括程式提交、與排程器協商資源以啟動ApplicationMaster、監控ApplicationMater執行狀態並在失敗的時候呼叫它。
ApplicationMaster(AM)
使用者提交的每個應用程式均包含一個AM,主要功能包括:
- 與RM排程器協商以獲取資源(用Container表示)
- 將得到的任務進一步分配給內部的任務
- 與NM通訊以啟動/停止任務
- 監控所有任務執行狀態,並在任務執行失敗時重新為任務申請資源以重啟任務
NodeManager(NM)
NM是每個節點上的資源和工作管理員,另一方面,它會定時地向RM彙報本節點上的資源使用情況和各個Container的執行狀態,另一方面,它接收並處理來自AM的Container啟動/停止等各種請求。
方面,它接收並處理來自AM的Container啟動/停止等各種請求。