hadoop讀書筆記MapReduce執行流程

一、  提交做業:主要執行函數submitJob(); 函數

     經過調用jobTracker對象的getNewJobId()方法從JobTracker處理取當前做業的ID號; spa

     檢查做業相關路徑。 對象

     計算做業的出入劃分,並將劃分信息寫入Job.split文件中。若是吸入失敗就會返回錯誤信息。 資源

     將運行做業所須要的資源---包括做業JAR文件,配置文件和計算所得的輸入劃分等複製到做業對應的HDFS上。 get

     調用JobTracker對象的submitJob()方法來真正提交做業; it

二、  初始化做業---做業提交後JobTracker會把此調用方法內部TaskScheduler變量中,而後進行調度。看成業被調度執行時,JobTracker會建立一個表明這個做業的JobInprogress對象。JobInProgress對象的initTasks函數會對人物進行初始化。 變量

     HDFS中讀取做業對應的Job.split 配置

     建立並初始化MapReduce任務 循環

     初始化兩個task; 程序

三、  分配任務:

 taskTracker做業爲一個單獨的JVM執行一個簡單的循環。主要實現每隔一段時間向jobTracker發送心跳:告訴JobTrackerTaskTracker是否存活,是否準備執行新的任務。JobTracker接受到心跳信息。若是有待分配任務。它就會爲TaskTracker分配一個任務並將分配信息封裝在新掉通訊的返回值中返回給TaskTracker

四、  執行任務:

TaskTracker申請到新的任務以後,就要在本地運行任務了。運行任務的第一步是

任務本地化將任務運行所須要的數據配置信息、程序代碼從HDFS複製到TaskTracker本地;

五、  更新任務執行進度和狀態

經過心跳通訊機制,全部TaskTracker的統計信息都會彙總到JobTrackerJobClient經過每秒查看JobTracker來接受做業進度的最新狀態。

相關文章
相關標籤/搜索