MR分佈式計算理論

  • MapReduce設計理念:

        移動計算,而不是移動數據

        兩個階段,Map / Reduce

  • Map和Reduce之間的Shuffle、Partition、Combiner過程的理解

        Shuffle過程:每個map task都有一個內存緩衝區,存儲着map的輸出結果,默認100MB(也可以通過設置配置文件中的參數mapreduce.task.io.sort.mb來設置),當緩衝區快滿的時候,會將緩衝區的數據以一個臨時文件的方式存放到磁盤中(找個過程是獨立的線程執行,默認達到緩衝區容量80%的時候會啓動該線程),當整個map task結束後再對磁盤中的找個map task產生的所有零食文件進行合併,生成最終的正式輸出文件,等待reduce task來拉數據。

        Partition理解:根據key或者 value及reduce的數量來決定當前的輸出結果該有那個reduce task處理,默認對ken hash後再模以reduce task的數量,默認的方式只是爲了平均reduce的處理能力,Partition過程可以定製。

        Combiner理解:每個reduce端合併數據時,有些數據可能像這樣:“aaa”/1, “aaa”/1。對於WordCount例子,就是簡單地統計單詞出現的次數,如果在同一個map task的結果中有很多個像“aaa”一樣出現多次的key,我們就應該把它們的值合併到一塊,這個過程叫reduce也叫combine。但MapReduce的術語中,reduce只指reduce端執行從多個map task取數據做計算的過程。除reduce外,非正式地合併數據只能算做combine了。其實大家知道的,MapReduce中將Combiner等同於Reducer。Combiner的輸出是Reducer的輸入,Combiner絕不能改變最終的計算結果。

 

 

參考博客:https://www.cnblogs.com/ljy2013/articles/4435657.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章