標籤:copy 原理 分配 googl 自己 技術 data span nec
大資料運算模型 MapReduce 原理2016-01-24 杜亦舒
MapReduce 是一個大資料集合的並行運算模型,由google提出,現在流行的hadoop中也使用了MapReduce作為計算模型
MapReduce 通俗解釋
圖書館要清點圖書數量,有10個書架,管理員為了加快統計速度,找來了10個同學,每個同學負責統計一個書架的圖書數量
張同學 統計 書架1
王同學 統計 書架2
劉同學 統計 書架3
......
過了一會兒,10個同學陸續到管理員這彙報自己的統計數字,管理員把各個數字加起來,就得到了圖書總數
這個過程就可以理解為MapReduce的工作過程
MapReduce中有兩個核心操作
(1)map
管理員分配哪個同學統計哪個書架,每個同學都進行相同的“統計”操作,這個過程就是map
(2)reduce
管理員把每個同學的結果進行匯總,這個過程就是reduce
MapReduce 工作過程拆解
下面通過一個經典案例(單詞統計)看MapReduce是如何工作的
有一個文字檔,被分成了4份,分別放到了4台伺服器中儲存
Text 1: the weather is good
Text 2: today is good
Text 3: good weather is good
Text 4: today has good weather
需求:統計出每個單詞的出現次數
處理過程
01
分詞處理
map節點 1
輸入:(text1, “the weather is good”)
輸出:(the, 1), (weather, 1), (is, 1), (good, 1)
map節點 2
輸入:(text2, “today is good”)
輸出:(today, 1), (is, 1), (good, 1)
map節點 3
輸入:(text3, “good weather is good”)
輸出:(good, 1), (weather, 1), (is, 1), (good, 1)
map節點 4
輸入:(text3, “today has good weather”)
輸出:(today, 1), (has, 1), (good, 1), (weather, 1)
02
排序
map節點 1
map節點 2
map節點 3
map節點 4
03
合并
map節點 1
map節點 2
map節點 3
map節點 4
04
匯總統計
MapReduce引入了barrier概念,有的譯為“同步障”,我理解為“分界線”,是進入reduce的一道分界線
barrier的作用是對合并結果進行組合
例如使用了3個reduce節點,需要對上面4個map節點的結果進行重新組合,把相同的單詞放在一起,並分配給3個reduce節點
reduce節點進行統計,計算出最終結果
大資料運算模型 MapReduce 原理