Hadoop 入門筆記—核心元件 MapRuduce

語言: CN / TW / HK

作者:幻好

來源:恆生LIGHT雲社群

基本概念

MapReduce 是一個分散式運算程式的程式設計框架,通過它能將使用者將編寫好的程式提交,併發執行在一個 Hadoop 叢集上。

MapReduce 核心功能是將使用者編寫的業務邏輯程式碼和自帶預設元件整合成一個完整的分散式運算程式。

MapReduce 是一個程式設計模型,分為兩個階段:Map 和 Reduce。輸入的資料會先分塊,然後由 Map 進行處理,最後輸出到 Reduce 中。

可以將它理解成對資料整理,然後歸納的一個過程。

1175569-20180425120806546-505816034-1636883770385.png

核心演算法

MapReduce 的演算法計劃通常分三個步驟組成:

  • Map:對映或對映器的工作是處理輸入資料。每個工作節點將map 函式應用於本地資料,並將輸出寫入臨時儲存。
  • Shuffle:工作節點根據輸出鍵重新分配資料,對資料對映排序、分組、拷貝,目的是屬於一個鍵的所有資料都位於同一個工作節點上。
  • Reduce:工作節點現在並行處理每個鍵的每組輸出資料,並將結果資料儲存到HDFS。

執行流程

MapReduce 通常由以下幾個步驟組成:

  • input : 讀取系統中的文字檔案;
  • splitting : 將檔案按照行進行拆分,能得到的K1 行數,V1 表示對應行的文字內容;
  • mapping : 並行將每一行按照空格進行拆分,拆分得到的List(K2,V2),其中K2 表示關鍵詞,V2 的值為 1,代表出現 1 次;
  • shuffling:由於mapping 的操作可能在不同的機器上並行處理的,就得通過shuffling 操作將相同key 值的資料分發到同一個節點上去合併,這樣才能統計出最終的結果,此時得到K2 為主鍵,List(V2) 為可迭代集合,V2 就是 Mapping 中的 V2;
  • Reducing : 對於每個工作節點上的K2 鍵值對進行Reduce() 操作,最終輸出。

MapReduce 程式設計模型中 splittingshuffing 操作都是由框架實現的,需要我們自己程式設計實現的只有 mappingreducing,這也就是 MapReduce 這個稱呼的來源。

image-20211114203642229.png

優缺點

優點

  • 能將大規模資料分多個節點平行計算,減少資料計算所需的時間;
  • 將計算移動到資料的位置進行,降低網路成本;

缺點

  • 只能進行離線計算,不能進行流式計算和實時計算;
  • 過程結果會存到磁碟,增加了I/O的負荷;

總結

MapReduce 最核心的還是將使用者開發的程式,能夠發到 Hadoop 上執行並執行,能夠動態的去處理提交的任務,通過並行的方式減少計算時間,獲取最終的計算結果。