1. 程式人生 > >Hadoop系列--Hadoop核心之MapReduce的原理

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,…)

  • —系統通訊、負載平衡、計算效能優化處理

  • 處理系統節點出錯檢測和失效恢復