再寫MapReduce執行流程之前,首先先對MapReduce有一些瞭解: 1. 簡介 MapReduce是一個計算框架,既然是做計算的框架,那麼表現的形式上就有輸入,操作輸入,得到結果2.主從結構 a.Hadoop1.0 MapReduce是主從結構,Hadoop1.0的主是JobTracker, ...
再寫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上