Hadoop系列--Hadoop核心之MapReduce的原理
1 MapReduce核心原理
“分而治之,平行計算”是MapReduce的核心原理,其實也是大資料處理的中心思想。
1.1 分而治之
在MapReduce中,分而治之,就是,
一個任務分成多個小的子任務(map),並行執行後,合併結果(reduce)。
1.2 平行計算
在任務分配完之後,每個子任務平行執行,彼此之間是互不影響的,也就是平行計算,具體的子任務可以按照具體的標準進行。在每一個子任務都完成之後再按照統一的標準進行合併計算即可。
2 例項講解
下面以一個實際例子展開講解,增強理解。
2.1 問題
現在有若干張(數量足夠多)雜亂無緒的、而且數目殘缺不全的紙牌,一共有2~A共計14種紙牌(不計花色),需要統計出來每種紙牌各有多少(不計花色)。
2.2 問題解決步驟
大體可分為以下步驟,如下圖。
1.分牌--分配任務
假設一共有1000張紙牌,現在將它們平均分配改5個人來統計處理。
那麼每個人處理200張紙牌。
2.各自統計--平行計算Map
每個人將手中各種型別的紙牌的數量統計出來。
例如:
小紅:(J,11) (Q,36) (K,3) … …
小藍:(J,36) (Q,2) (K,25) … …
小綠:(J,1) (Q,3) (K,69) … …
小黃:(J,96) (Q,14) (K,64) … …
小青:(J,55) (Q,26) (K,88) … …
3.合併統計Reduce
然後,彙總。
每個人將各自統計的不同型別的紙牌的數量展示出來。
然後再將相同型別的紙牌的數量加和即可。
則如下:
(J,11+36+1+96+55) -> (J,199)
(Q,36+2+3+14+26) -> (Q,179)
(K,3+25+69+64+88) ->(K,185)
4.篩選結果
最終,所有的紙牌型別都按照這樣的標準計算即可得出所有的結果。
3 構建抽象模型
以上“分而治之,平行計算”的資料處理思想,是典型的流式大資料問題的特徵。
Map和Reduce為我們提供了一個清晰的操作介面。
4 統一框架
MapReduce提供一個統一的計算框架,可完成:
—計算任務的劃分和排程
資料的分佈儲存和劃分
—處理資料與計算任務的同步
結果資料的收集整理(sorting, combining, partitioning,…)
—系統通訊、負載平衡、計算效能優化處理
處理系統節點出錯檢測和失效恢復