1. 程式人生 > >Hadoop的計算框架——shuffle流程理解要點

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

1. 分割槽partition

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

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

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

3. 三次排序

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

Shuffle階段,合併溢寫檔案時需要分割槽內排序(歸併排序)。

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