Yarn快速系列入門(3) | Yarn和MapReduce的作業提交全過程

本篇博文,博主爲大家介紹Yarn和MapReduce的作業提交全過程。
1


一. Yarn的作業提交過程

2
作業提交全過程詳解

1.1 作業提交

  • 第1步:Client調用job.waitForCompletion方法,向整個集羣提交MapReduce作業。
  • 第2步:Client向RM申請一個作業id。
  • 第3步:RM給Client返回該job資源的提交路徑和作業id。
  • 第4步:Client提交jar包、切片信息和配置文件到指定的資源提交路徑。
  • 第5步:Client提交完資源後,向RM申請運行MrAppMaster。

1.2 作業初始化

  • 第6步:當RM收到Client的請求後,將該job添加到容量調度器中。
  • 第7步:某一個空閒的NM領取到該Job。
  • 第8步:該NM創建Container,併產生MRAppmaster。
  • 第9步:下載Client提交的資源到本地。

1.3 任務分配

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

1.4 任務運行

  • 第12步:MR向兩個接收到任務的NodeManager發送程序啓動腳本,這兩個NodeManager分別啓動MapTask,MapTask對數據分區排序。
  • 第13步:MrAppMaster等待所有MapTask運行完畢後,向RM申請容器,運行ReduceTask。
  • 第14步:ReduceTask向MapTask獲取相應分區的數據。
  • 第15步:程序運行完畢後,MR會向RM申請註銷自己。

1.5 進度和狀態更新

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

1.6 作業完成

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

二. MapReduce的作業提交過程(在此只圖片說明)

3
好了,本次關於Yarn和MapReduce的作業提交全過程的內容就介紹到這裏。下一篇文章將爲大家介紹Yarn調度器,敬請期待!


  \color{#FF0000}{看完就贊,養成習慣!!!}^ _ ^ ❤️ ❤️ ❤️
  碼字不易,大家的支持就是我堅持下去的動力。點贊後不要忘了關注我哦!

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