1. 程式人生 > 實用技巧 >MapReduce 入門與實戰

MapReduce 入門與實戰

  1. MapReduce的思想核心是“分而治之”

Map負責“分”,即把複雜的任務分解為若干個“簡單的任務”來並行處理。可以進行拆分的前提是這些小任務可以平行計算,彼此間幾乎沒有依賴關係。

Reduce負責“合”,即對map階段的結果進行全域性彙總。

MapReduce執行在yarn叢集

  1. ResourceManager
  2. NodeManager

Map和Reduce為程式設計師提供了一個清晰的操作介面抽象描述。MapReduce中定義瞭如下的Map和Reduce兩個抽象的程式設計介面,由使用者去程式設計實現.Map和Reduce,MapReduce處理的資料型別是<key,value>鍵值對。

Map: (k1; v1) → [(k2; v2)]
Reduce: (k2; [v2]) → [(k3; v3)]
  1. MapReduce 程式設計規範

MapReduce 的開發一共有八個步驟, 其中 Map 階段分為 2 個步驟,Shuffle階段4個步驟,Reduce階段分為2個步驟

Map 階段 2 個步驟

  1. 設定 InputFormat 類, 將資料切分為 Key-Value(K1和V1) 對, 輸入到第二步
  2. 自定義 Map 邏輯, 將第一步的結果轉換成另外的 Key-Value(K2和V2) 對, 輸出結果

Shuffe 階段 4 個步驟

  1. 對輸出的 Key-Value 對進行分割槽
  2. 對不同分割槽的資料按照相同的 Key 排序
  3. (可選) 對分組過的資料初步規約, 降低資料的網路拷貝
  4. 對資料進行分組, 相同 Key 的 Value 放入一個集合中

Reduce 階段 2 個步驟

  1. 對多個 Map 任務的結果進行排序以及合併, 編寫 Reduce 函式實現自己的邏輯, 對輸入的 Key-Value 進行處理, 轉為新的 Key-Value(K3和V3)輸出
  2. 設定 OutputFormat 處理並儲存 Reduce 輸出的 Key-Value 資料