Yarn架構 + 執行流程


學習筆記
參考文章:YARN的架構及原理----詳細
參考文章:Yarn的運行原理(執行流程)

一、Yarn架構

1)ResourceManger:RM
整個集羣同一時間提供服務的RM只有一個,負責集羣資源的統一管理的調度
1、處理客戶端的請求
提交一個作業、殺死一個作業
2、啓動和監控ApplicationMaster
3、監控nodemanager
一旦某個NodeManger掛了,那麼該NodeManger上運行的任務需要告訴Application如何處理
4、資源的分配和調度

2)NodeManger(NM)
整個集羣中有多個NodeManger,每臺機器對應一個NM,監控 Containers 的資源使用情況並報告給RM,定時向RM發送心跳以檢查健康狀態
1、單個節點的資源管理
2、處理來自ResouceManager的命令
3、處理來自ApplicationMaster的命令
4、定時向ResouceManager彙報本節點的資源使用情況(心跳數據包)

3)ApplicationMaster:AM
每個應用程序對應一個AM,爲應用程序向ResourceManger申請(core\memory)用於執行task的資源,和NM一起監控執行task的運行情況
需要與NodeManger通信:啓動/停止task,task是運行在container裏面,ApplicationMaster也是運行在Container裏面
1、爲應用程序申請資源,並分配給內部任務
2、任務的監控和容錯

4)Container
1、封裝了CPU、Memory等資源的一個容器
2、是一個運行任務的抽象

5)Client
1、提交作業
2、查看作業的運行進度
3、殺死作業

二、Yarn運行流程

執行流程:
1、客戶端向ResourceManger提交程序
2、ResourceManger向NM中分配第一個Container,並在該Container中啓動AM
3、ApplicationMaster向ResourceManger註冊,ApplicationMaster在ResourceManger註冊完之後,用戶可以直接通過ResourceManger查看應用程序的運行狀態(然後它將爲各個任務申請資源,並監控它的運行狀態,直到運行結束)
4、ApplicationMaster向ResourceManger申請資源(採用輪詢的方式通過RPC協議向ResourceManger申請和領取資源,資源的協調通過異步完成)
5、ApplicationMaster申請到資源後向 Node Manager 請求啓動 Container 去執行 task
6、NodeManger爲任務設置好運行環境(包括環境變量、JAR包、二進制程序等)後,將任務啓動命令寫到一個腳本中,並通過運行該腳本啓動任務
7、各個任務通過RPC協議向ApplicationMaster彙報自己的狀態和進度,以讓ApplicationMaster隨時掌握各個任務的運行狀態,從而可以在任務失敗事重新啓動任務
8、應用程序運行完成後,ApplicationMaster向ResourceManger註銷並關閉自己

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章