1. 程式人生 > >MapReduce程式開發元件說明

MapReduce程式開發元件說明

1、WordCount編碼回顧

MapReduce程式設計涉及的主要元件,如下:
InputFormat類:分割成多個splits和每行怎麼解析。
Mapper類:對輸入的每對<key,value>生成中間結果。
Combiner類:在map端,對相同的key進行合併。
Partitioner類:在shuffle過程中,將中間結果分為N份,每一份都由一個reduce去完成。
Reducer類:對所有的map中間結果,進行彙總、聚合。
OutputFormat類:輸出最終結果格式。
wordcount

2、程式執行過程簡圖

MapReduce程式主要分為兩個階段:Map Task和Reduce Task,開發人員只需實現map()和reduce()兩個函式,即可實現分散式計算。
mapreduce

3、程式元件

3.1、第一階段Map

3.1.1、InputFormat 主要用於描述輸入資料的格式,它提供以下兩個功能
資料切分:按照某個策略將輸入資料切分成若干個split,以便確定 Map Task 個數以及對應的 split。
Mapper資料來源:給定某個 split,能將其解析成一個個 key/value 對。
3.1.2、FileInputFormat所有基於檔案的 InputFormat 實現的基類。
派生出針對文字檔案格式的 TextInputFormat、 KeyValueTextInputFormat 和 NLineInputFormat;針對二進位制檔案格式的 SequenceFileInputFormat 等。
map

3.2、中間過程Shuffle

shuffle是執行排序、將map運算結果(key-value)傳給reducer的過程,目的是保證reducer輸入是按鍵排序的。該過程涉及的元件:分割槽(Partitioner)、排序(Sorter)、合併(Combiner)。
分割槽預設類HashPartitioner;合併Combiner是為了減輕reduce壓力,故此可以與reducer保持一致。

3.3、第二階段Reduce

OutputFormat主要用於描述輸出資料的格式,它能夠將使用者提供的 key/value 對寫入特定格式的檔案中。
reduce

4、MapReduce工作原理

參見中文版:

https://yq.aliyun.com/ziliao/466418