1. 程式人生 > >作業提交全過程

作業提交全過程

1.作業提交過程之YARN,如圖所示。

作業提交全過程詳解

1)作業提交

1步:Client呼叫job.waitForCompletion方法,向整個叢集提交MapReduce作業。

2步:ClientRM申請一個作業id

3步:RMClient返回該job資源的提交路徑和作業id

4步:Client提交jar包、切片資訊和配置檔案到指定的資源提交路徑。

5步:Client提交完資源後,向RM申請執行MrAppMaster

2)作業初始化

6步:當RM收到Client的請求後,將該job新增到容量排程器中。

7步:某一個空閒的

NM領取到該Job

8步:該NM建立Container併產生MRAppmaster

9步:下載Client提交的資源到本地。

3)任務分配

10步:MrAppMasterRM申請執行多個MapTask任務資源。

11步:RM將執行MapTask任務分配給另外兩個NodeManager,另兩個NodeManager分別領取任務並建立容器。

4)任務執行

12步:MR向兩個接收到任務的NodeManager傳送程式啟動指令碼,這兩個NodeManager分別啟動MapTaskMapTask對資料分割槽排序。

13步:MrAppMaster等待所有

MapTask執行完畢後,向RM申請容器,執行ReduceTask

14步:ReduceTaskMapTask獲取相應分割槽的資料。

15步:程式執行完畢後,MR會向RM申請登出自己。

5)進度和狀態更新

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

6)作業完成

除了嚮應用管理器請求作業進度外, 客戶端每5秒都會通過呼叫waitForCompletion()來檢查作業是否完成。時間間隔可以通過

mapreduce.client.completion.pollinterval來設定。作業完成之後, 應用管理器和Container會清理工作狀態。作業的資訊會被作業歷史伺服器儲存以備之後使用者核查。

2.作業提交過程之MapReduce,如圖4-26所示