作業提交全過程
1.作業提交過程之YARN,如圖所示。
作業提交全過程詳解
(1)作業提交
第1步:Client呼叫job.waitForCompletion方法,向整個叢集提交MapReduce作業。
第2步:Client向RM申請一個作業id。
第3步:RM給Client返回該job資源的提交路徑和作業id。
第4步:Client提交jar包、切片資訊和配置檔案到指定的資源提交路徑。
第5步:Client提交完資源後,向RM申請執行MrAppMaster。
(2)作業初始化
第6步:當RM收到Client的請求後,將該job新增到容量排程器中。
第7步:某一個空閒的
第8步:該NM建立Container,併產生MRAppmaster。
第9步:下載Client提交的資源到本地。
(3)任務分配
第10步:MrAppMaster向RM申請執行多個MapTask任務資源。
第11步:RM將執行MapTask任務分配給另外兩個NodeManager,另兩個NodeManager分別領取任務並建立容器。
(4)任務執行
第12步:MR向兩個接收到任務的NodeManager傳送程式啟動指令碼,這兩個NodeManager分別啟動MapTask,MapTask對資料分割槽排序。
第13步:MrAppMaster等待所有
第14步:ReduceTask向MapTask獲取相應分割槽的資料。
第15步:程式執行完畢後,MR會向RM申請登出自己。
(5)進度和狀態更新
YARN中的任務將其進度和狀態(包括counter)返回給應用管理器, 客戶端每秒(通過mapreduce.client.progressmonitor.pollinterval設定)嚮應用管理器請求進度更新, 展示給使用者。
(6)作業完成
除了嚮應用管理器請求作業進度外, 客戶端每5秒都會通過呼叫waitForCompletion()來檢查作業是否完成。時間間隔可以通過
2.作業提交過程之MapReduce,如圖4-26所示