mapreduce

MapReduce計算框架

如果將 Hadoop 比做一頭大象,那麼MapReduce就是那頭大象的電腦。MapReduce是Hadoop核心編程模型。在Hadoop 中,數據處理核心就是 MapReduce程序設計模型。

Map 和Reduce的概念是從函數式變成語言中借來的,整個MapReduce計算過程分爲Map 階段和Reduce 階段,也稱爲映射和縮減階段,這兩個獨立的階段實際上是兩個獨立的過程,即 Map 過程和 Reduce 過程,在 Map 中進行數據的讀取和預處理,之後將預處理的結果發送到 Reduce中進行合併。

MapReduce執行流程

  1. 輸入和拆分

不屬於map和reduce的主要過程,但屬於整個計算框架消耗時間的一部分,該部分會爲正式的map準備數據。

  1. Map映射

是Hadoop並行性質發揮的地方。根據用戶指定的 map過程,MapReduce嘗試在數據所在機器上執行該 map程序。在HDFS中,文件數據是被複制多份的,所以計算將會選擇擁有此數據的最空閒的節點。
在這一部分,map內部具體實現過程,可以由用戶自定義。

  1. Shuffle派發

Shuffle 過程是指 Mapper 產生的直接輸出結果,經過一系列的處理,成爲最終的
Reducer直接輸入數據爲止的整個過程。這是mapreduce的核心過程。該過程可以分爲兩
個階段:
Mapper 端的 Shuffle:由 Mapper 產生的結果並不會直接寫入到磁盤中,而是先存
儲在內存中,當內存中的數據量達到設定的閥值時,一次性寫入到本地磁盤中。並同時進行
sort(排序)、combine(合併)、partition(分片)等操作。其中,sort 是把Mapper 產
生的結果按照 key 值進行排序;combine 是把key 值相同的記錄進行合併;partition是把
數據均衡的分配給 Reducer。
Reducer 端的Shuffle:由於Mapper 和Reducer 往往不在同一個節點上運行,所以
Reducer 需要從多個節點上下載 Mapper 的結果數據,並對這些數據進行處理,然後才能
被Reducer 處理。

  1. Reduce歸約(縮減、化簡)

Reducer 接收形式的數據流,形成形式的輸出,具體的過程可以由用戶自定義,最終結果直接寫入 hdfs。每個 reduce 進程會對應一個輸出文件,名稱以part-開頭。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章