Hadoop之Shuffle機制詳解

2022-10-08 17:03:21 字數 905 閱讀 8278

一般把資料從map階段輸出到reduce階段的過程叫shuffle,所以shuffle的作用範圍是map階段資料輸出到reduce階段資料輸入這一整個中間過程!

1)collect階段:

將maptask的結果輸出到預設大小為100m的環形緩衝區,儲存的是key/value序列化資料,partition分割槽資訊等。

2)spill溢位階段:

當記憶體中的資料量達到一定的閥值的時候,就會將資料寫入本地磁碟,

在將資料寫入磁碟之前需要對資料進行一次排序的操作,如果配置了combiner,還會將有相同分割槽號和key的資料進行排序。

3)merge階段:

把所有溢位的臨時檔案進行一次合併操作,以確保乙個maptask最終只產生乙個中間資料檔案。

4)copy階段:

reducetask啟動fetcher執行緒到已經完成maptask的節點上覆制乙份屬於自己的資料,

這些資料缺省會儲存在記憶體的緩衝區中,當記憶體的緩衝區達到一定的閥值的時候,就會將資料寫到磁碟之上。

5)merge階段:

在reducetask遠端複製資料的同時,會在後台開啟兩個執行緒

(乙個是記憶體到磁碟的合併,乙個是磁碟到磁碟的合併)對記憶體到本地的資料檔案進行合併操作。

6)sort階段:

在對資料進行合併的同時,會進行排序操作,由於maptask階段已經對資料進行了區域性的排序,

reducetask只需保證copy的資料的最終整體有效性即可

shuffle中的緩衝區大小會影響到 mapreduce 程式的執行效率,原則上說,緩衝區越大,磁碟io的次數越少,

執行速度就越快,正是因為shuffle的過程中要不斷的將檔案從磁碟寫入到記憶體,再從記憶體寫入到磁碟,

從而導致了hadoop中mapreduce執行效率相對於storm等一些實時計算來說比較低下的原因。

Hadoop學習日記(十三) Shuffle機制

2019.07.03 學習過程主要參考段海濤大資料p35 map任務與資料儲存的資料中間有一層 切片 split 的概念。對於小檔案處理,可使得乙個split對應多個實際的資料塊 當檔案較大被分成多個128m的塊時,乙個split可對應乙個塊。1.每個map有乙個環形記憶體緩衝區,用於儲存任務的輸出...

hadoop執行原理之shuffle

hadoop的核心思想是mapreduce,但shuffle又是mapreduce的核心。shuffle的主要工作是從map結束到reduce開始之間的過程。首先看下這張圖,就能了解shuffle所處的位置。圖中的partitions copy phase sort phase所代表的就是shuff...

hadoop的shuffle和排序

1.1 maptask執行內部原理 當map task開始運算,並產生中間資料時,其產生的中間結果並非直接就簡單的寫入磁碟。這中間的過程比較複雜,並且利用到了記憶體buffer來進行已經產生的部分結果的快取,並在記憶體buffer中進行一些預排序來優化整個map的效能。如上圖所示,每乙個map都會對...