畫圖詳解yarn的資源調度流程


作業提交

  • Client調用job.waitForCompletion⽅法,向整個集群提交MapReduce作業。
  • Client向RM申請一個作業id。
  • RM給Client返回該job資源的提交路徑和作業id。
  • Client提交jar包、切⽚信息和配置文件到指定的資源提交路徑。
  • Client提交完資源后,向RM申請運行MrAppMaster。

作業初始化

  • 當RM收到Client的請求后,將該job添加到容量調度器中。
  • 某⼀個空閑的NM領取到該Job。
  • 該NM創建Container,並產生MRAppmaster。
  • 下載Client提交的資源到本地。

任務分配

  • MrAppMaster向RM申請運行多個MapTask任務資源。
  • RM將運行MapTask任務分配給另外兩個NodeManager,另兩個NodeManager分別領取任務並創建容器。

任務運行

  • MrAppMaster向兩個接收到任務的NodeManager發送程序啟動腳本,這兩個NodeManager分別啟動MapTask,MapTask對數據分區排序。
  • MrAppMaster等待所有MapTask運行完畢后,向RM申請容器,運行ReduceTask。
  • ReduceTask向MapTask獲取相應分區的數據。
  • 程序運行完畢后,MrAppMaster會向RM申請注銷⾃己。

進度和狀態更新

YARN中的任務將其進度和狀態返回給應⽤管理器, 客戶端每秒(通過mapreduce.client.progressmonitor.pollinterval設置)向應⽤管理器請求進度更新, 展示給用戶。

作業完成

除了向應用管理器請求作業進度外, 客戶端每5秒都會通過調用waitForCompletion()來檢查作業是否完成。時間間隔可以通過mapreduce.client.completion.pollinterval來設置。作業完成之后, 應用管理器和Container會清理工作狀態。作業的信息會被作業歷史服務器存儲以備之后用戶核查。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM