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