MR計算模型四
阿新 • • 發佈:2018-12-20
YARN是hadoop2.0中的資源管理系統,他的基本設計思想是將MRv1中的JobTracker的拆分成了兩個獨立的服務:一個全域性的資源管理器的ResourceManager和每個應用程式特有的ApplicationMaster。
- --ResourceManager負責整個系統的資源管理和分配。
- --ApplicationMaster負責單個應用程式的管理。
Yarn總體上仍然是Master/Slave結構
- --ResourceManager為Master,負責對各個NodeManager上的資源進行統一管理和排程。
- --當用戶提交一個應用程式時,需要提供一個用於跟蹤和管理這個程式的ApplicationMaster,他負責向ResourceManager申請資源,並要求NodeManager啟動可以佔用一定資源的任務。
- --由於不同的ApplicationMaster被分佈到不同的節點上,因此他們之間不會相互影響。
YARN組成結構ResourceManager
- ResourceManager是一個全域性的資源管理器,負責整個系統的資源管理和分配。它主要有兩個元件構成:
- --排程器:排程器根據容量、佇列等限制條件,將系統中的資源分配給各個正在執行的應用程式。資源分配單位用一個抽象概念“資源容器”表示。
- --應用程式管理器:ApplicationManager負責管理整個系統中所有應用程式,包扣應用程式提交、與排程器協商資源以啟動ApplicationMaster、監控ApplicationMaster執行狀態並在失敗是重新啟動它等。
YARN組成結構ApplicationMaster
- 使用者提交的每個應用程式均包含了1個ApplicationMaster,主要功能包括:
- 與ResourceManager排程器協商以獲取資源,
- 與NodeManager通訊以啟動/停止任務。
- 監控所有任務執行的狀態,並在任務執行失敗時重新為任務申請資源已重啟任務。
YARN組成結構NodeManager
- NodeManager是每個節點上的資源和工作管理員:
- 一方面,他定時向ResourceManager彙報本節點上的資源使用情況和各個Container的執行狀態。
- 另一方面,他會接收並處理來自ApplicationMaster的Container啟動/停止等各種請求。
YARN組成結構Container
- Container是yarn中的資源抽象,他封裝了某個節點上的多維度資源,入記憶體、CPU、磁碟、網路等。
- 當ApplicationMaster向ResourceManager申請資源時,ResourceManager為ApplicationMaster返回的資源便是用Container表示的。YARN會為每個人物分配一個container,且該任務只能使用該container中描述的資源。
YARN工作流程
- 當用戶想YARN中提交一個應用程式後,YARN將兩個階段執行該應用程式:
- 第一階段是啟動ApplicationMaster,
- 第二階段是由ApplicationMaster建立應用程式,為它申請資源,並監控它的整個執行過程,直到執行完畢。
詳細流程1
- 使用者向YARN中提交應用程式,包括ApplicationMaster程式、啟動ApplicationMaster的命令、使用者程式等。
- ResourceManager為該應用程式分配第一個container,並與對應的NodeManager通訊,要求他在這個container中啟動應用程式的ApplicationMaster。
- ApplicationMaster首先向ResourceManager註冊,這樣使用者可以直接通過ResourceManager檢視應用程式的執行狀態,然後她將為各個任務申請資源,並監控它的執行狀態,直到執行結束。
詳細流程2
- ApplicationMaster採用輪訓的方式通過RPC協議向ResourceManager申請和領取資源。
- 一旦ApplicationMaster申請到資源後,便於對應的NodeManager通訊,要求他啟動任務。
- NodeManager為任務設定好執行環境(包括環境變數、JAR包、二進位制程式等)後,將任務啟動命令寫到一個指令碼中,並通過執行該指令碼啟動任務。
詳細路程3
- 各個任務通過某個RPC協議向ApplicationMaster彙報自己的狀態和進度,以讓ApplicationMaster隨時掌握各個任務的執行狀態,從而可以在任務失敗是重新啟動任務。
- 在應用程式執行過程中,使用者可以隨時通過RPC向ApplicationMaster查詢應用程式的當前執行狀態。
- 應用程式執行完畢後,ApplicationMaster向ResourceManager登出並關閉自己。