Hadoop的計算框架——shuffle流程理解要點

1. 分區partition

每個MapTask的輸出都會被分割爲多個分區,Reducer會根據JobTask維護的映射關係獲取自己應該處理的那一份。

有多少個Reducer,Mapper的輸出就應該有多少個分區。

這個分區動作叫做partition,具體邏輯是由partitioner類實現(用戶可以自定義自己的partitioner),partition的職責就是保證MapTask輸出的數據中具有同類Key的數據進入同一個Reducer進行處理。


3. 三次排序

Mapper輸出階段,緩衝區溢寫時,溢寫結果是分區內排序的。

Shuffle階段,合併溢寫文件時需要分區內排序(歸併排序)。

Copy階段(Reducer輸入階段),從各個Mapper收集過來的數據先入Reducer的緩衝區,溢寫(merge)時整體排序(歸併排序)。


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