作業(yè)的提交
創(chuàng)建內部的jobsubmiter實例來提交作業(yè),具體步驟
1.向資源管理器 resource manager請求應用ID作為作業(yè)ID
2.檢查作業(yè)的輸出說明,如指定輸出目錄等
3.計算作業(yè)的輸入分片公黑,對文件的分片
4.將運行作業(yè)所需要的資源,如文件分片,jar文件等荣德,復制到一個以作業(yè)ID為目錄下的共享文件系統(tǒng)中闷煤,調用submitapplication()提交作業(yè),調用資源管理器
作業(yè)初始化
1.資源管理器收到submitapplycation()調用后涮瞻,將請求傳給yarn調度器
2.調度器分配容器container鲤拿,然后資源管理器在container中執(zhí)行application mater進程,接收來自任務的進度和報告署咽。
3.application master 接受來自共享文件系統(tǒng)的文件分片近顷,來確定對每個分片創(chuàng)建一個map任務以及reduce任務,分配任務ID
4.在運行任務之前宁否,調用setupjob()設置作業(yè)最終輸出目錄及任務最終輸出目錄
任務分配
1.為所有map和reduce任務想資源管理器申請container窒升,優(yōu)先請求map任務容器,
2.確定cpu和內存需求慕匠,設計參數(shù) mapreduce.map.memory.mb mapreduce.reduce.memory.mb內存 mapreduce.map.cpu.vcores mapreduce.reduce.cpu.vcoresp.memory.mb CPU
任務的執(zhí)行
1.為任務分配完container饱须,application mater與節(jié)點管理器通信來啟動container
2.任務所需資源本地化,然后運行map或者reduce任務台谊。
任務進度和狀態(tài)更新
任務在運行時蓉媳,需要對進度保持跟蹤。對于map任務而言锅铅,任務進度是已處理輸入的所占百分比酪呻,reduce而言是系統(tǒng)計算的已處理輸入所占百分比。
計數(shù)器:負責對任務進行過程中各個時間的計數(shù)盐须,如輸入行數(shù)等玩荠,通過每秒輪詢application mater獲取。
作業(yè)完成
1.application master收到最后一個任務完成通知后丰歌,將作業(yè)狀態(tài)置為成功姨蟋,將信息輸出到控制臺
2.application master和container 清理工作狀態(tài),將中間輸出刪除立帖,作業(yè)日志被記錄被存檔以便日后查詢