MapReduce简述、工作流程
MapReduce簡述、工作流程
MR編程模型之執(zhí)行步驟:
1、準備map處理的輸入數(shù)據(jù)
2、mapper處理
3、Shuffle
4、Reduce處理
5、結(jié)果輸出
?(input)<k1,v1> -> map -><k2,v2> -> combine -> <k2,v2> ->reduce -> <k3,v3>(output)
?
?
?
處理流程:
流程:
1、輸入文本信息,由InputFormat?->?FileInputFormat ->?TextInputFormat,通過getSplits方法獲得Split數(shù)組,然后在用getRecordReader 方法對Split做處理,每讀一行交給一個map處理
2、每個節(jié)點上的所有map,交由該節(jié)點上的Partitioner處理(Shuffling的過程),按key將map放在其他節(jié)點上去還是繼續(xù)在該節(jié)點下處理
3、排序
4、結(jié)果交由reduce處理
5、處理完成后由?OutputFormat ->FileOutputFormat ->TextOutputFormat 寫到本地或Hadoop上
?
Split:MR處理的的數(shù)據(jù)塊,MR中最小的計算單元,默認是與HDFS中的Block(HDFS中的最小存儲單元,默認128M)是一一對應(yīng)的,也可以手工設(shè)置(不建議修改)
InputFormat:將輸入的數(shù)據(jù)進行分片(Split)?InputSplit[] getSplits(JobConf var1, int var2)
TextInputFormat:用來處理文本格式的數(shù)據(jù)
OutputFormat: 輸出
?
?
上圖圖解:
一般來說,一個Split對應(yīng)一個Block,但上圖是一個設(shè)置過后的。
一個file文件被分成了n個Block,對應(yīng)著就是2n個Split,經(jīng)過InputFormat處理后,每個Split交由一個Mapper處理,通過Shuffling的分組和排序后產(chǎn)生多個Reducer,每個Reducer就會產(chǎn)生一個文件
?
?
?
MapReduce 1.x的架構(gòu):一個JobTracker+多個taskTracker
JobTracker:負責資源管理和作業(yè)調(diào)度
TrakTracker:定期向JobTracker匯報節(jié)點的健康、資源、作業(yè)情況,接收JT的命令,比如啟動/殺死任務(wù)
?
MapReduce 2.x:
?
轉(zhuǎn)載于:https://www.cnblogs.com/onone/articles/8483689.html
總結(jié)
以上是生活随笔為你收集整理的MapReduce简述、工作流程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 总结:详细讲解MapReduce过程(整
- 下一篇: MapReduce示例——WordCou