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

作業提交的全過程

  1. 作業提交之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會清理作業狀態,作業資訊會被作業歷史伺服器儲存以備之後使用者核查

  2. 作業提交過程MapReduce

    在這裡插入圖片描述

  3. 作業提交過程之讀資料

在這裡插入圖片描述

  1. 作業提交過程之寫資料
    在這裡插入圖片描述