MapReduce原理(分佈式計算模型)----------總結

MapReduce:
算法


1.是一個分佈式的計算模型,用於解決海量數據的計算問題。網絡

2.由兩部分組成,Map和Reduce分佈式

3.Map和Reduce的參數都是key,value的形式ide



MapReduce的執行過程:函數

1.Map任務處理:排序

   1.1讀取HDFS中的文件做爲輸入,解析爲key,value對。對輸入文件的每一行,解析成key、value對。每個鍵值對調用一次map函數。(k1,v1);
it

   1.2在複寫的map函數中,編寫處理邏輯,對輸入的key、valu對進行處理,轉換成新的key、value(k2,v2);
class

   1.3對輸出的結果進行分區(key相同的放在一塊);
map

   1.4對不一樣的分區的數據,按照key進行排序、分組。-----分組:相同的key的value放到一個集合中。
數據

   1.5分組後的數據進行規約。----把大的數據變爲小的數據(可選步驟)(k2,v2)

2.Reduce任務處理:

   2.1對多個map任務的輸出,按照不一樣的分區,經過網絡拷貝到不一樣的reduce節點上。

   2.2對多個map任務的輸出進行合併,排序。寫reduce函數實現本身的邏輯,對輸入的k2,v2進行處理,轉換成新的key,value(k3,v3)

   2.3把reduce的輸出保存到文件中。


-----------------------------規約:

job.setCombinerClass(MyReduce.class);//形參是自定義一的reduce類

1.爲何使用combiner:

   Combiner發生在map端,對數據進行規約處理,數據量變小,網絡傳輸變少,傳輸到reduce的數據量變小,傳輸時間變短,做業的總體時間變短。


2.爲何Combiner不做爲mapreduce的標配

   由於不是全部的算法都適合使用Combiner處理,如求平均數


3.Combiner自己已經執行了reduce操做,爲何在Reducer階段仍是要執行reduce操做

   Combiner發生在map端,處理一個任務所接收的文件中的數據,不能跨map執行,只有reduce能夠接收多個map任務處理的數據

相關文章
相關標籤/搜索