MapReduce簡述、工作流程
MapReduce簡述、工作流程
MR程式設計模型之執行步驟:
1、準備map處理的輸入資料
2、mapper處理
3、Shuffle
4、Reduce處理
5、結果輸出
(input)<k1,v1> -> map -><k2,v2> -> combine -> <k2,v2> ->reduce -> <k3,v3>(output)
處理流程:
流程:
1、輸入文字資訊,由InputFormat->FileInputFormat ->TextInputFormat,通過getSplits方法獲得Split陣列,然後在用getRecordReader 方法對Split做處理,每讀一行交給一個map處理
2、每個節點上的所有map,交由該節點上的Partitioner處理(Shuffling的過程),按key將map放在其他節點上去還是繼續在該節點下處理
3、排序
4、結果交由reduce處理
5、處理完成後由OutputFormat ->FileOutputFormat ->TextOutputFormat 寫到本地或Hadoop上
Split:MR處理的的資料塊,MR中最小的計算單元,預設是與HDFS中的Block(HDFS中的最小儲存單元,預設128M)是一一對應的,也可以手工設定(不建議修改)
InputFormat:將輸入的資料進行分片(Split)InputSplit[] getSplits(JobConf var1, int var2)
TextInputFormat:用來處理文字格式的資料
OutputFormat: 輸出
上圖圖解:
一般來說,一個Split對應一個Block,但上圖是一個設定過後的。
一個file檔案被分成了n個Block,對應著就是2n個Split,經過InputFormat處理後,每個Split交由一個Mapper處理,通過Shuffling的分組和排序後產生多個Reducer,每個Reducer就會產生一個檔案
MapReduce 1.x的架構:一個JobTracker+多個taskTracker
JobTracker:負責資源管理和作業排程
TrakTracker:定期向JobTracker彙報節點的健康、資源、作業情況,接收JT的命令,比如啟動/殺死任務
MapReduce 2.x:
轉載於:https://www.cnblogs.com/onone/articles/8483689.html