1. 程式人生 > 實用技巧 >MapReduce簡述、工作流程

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