再寫MapReduce執行流程之前,首先先對MapReduce有一些瞭解:
1. 簡介
MapReduce是一個計算框架,既然是做計算的框架,那麼表現的形式上就有輸入,操作輸入,得到結果
2.主從結構
a.Hadoop1.0
MapReduce是主從結構,Hadoop1.0的主是JobTracker,從TaskTracker。
JobTracker作用 : 作業的管理者,將作業分解成一堆的任務(task),其中任務又分為MapTask和ReduceTask。將任務分派給TaskTracker執行。作業的監控,容錯處理,在一定時間的間隔內,JT沒有收到TT的心跳資訊,那麼說明TT很有可能是掛了,TT上執行的任務會被指派到其他的TT上去執行。
TaskTracker作用 : 任務的執行者,在TT上執行task。會與JT進行互動:執行/啟動/作業,傳送心跳資訊給JT。
MapTask作用 : 自己開發的map任務交由task進行處理。解析每條記錄的資料,交給自己的map方法處理。將map的輸出結果寫到本地磁碟。
ReduceTask作用 : 將map task輸出的資料進行讀取。按照資料進行分組傳給編寫的reduce方法處理。輸出結果寫到HDFS。
b.Hadoop2.0
因為JobTracker單點故障,成為系統的瓶頸,限制系統進一步擴充套件,在Hadoop2.0引進Yarn,將MR執行於資源管理框架Yarn之上
ResourceManager作用 : 負責排程分配每一個task任務執行於NodeManager上,如果發現有失敗的,就重新分配任務到其他節點上,每一個Hadoop叢集只有一個ResourceManager,一般執行在master節點
NodeManager作用 : NodeManager主動與ResourceManager通訊,接收作業,並負責執行每一個task任務,為了減少網路頻寬,NodeManager最好執行在HDFS的DataNode上