1. 程式人生 > 其它 >03_MapReduce框架原理_3.6 Shuffle機制(原始碼)

03_MapReduce框架原理_3.6 Shuffle機制(原始碼)

Hadoop
6. Shuffle 機制 - (流程) 1. 什麼是Shuffle&Shuffle的作用 1. Map方法之後,Reduce方法之前的資料處理過程 稱之為 Shuffle
2. 流程說明 1. MapTask 通過獲取到的 切片物件和相對於的記錄讀取器 map()方法 處理資料 後的輸出結果(key-value) 會輸出到 記憶體緩衝區 2. 當 記憶體緩衝區 快滿的時候,需要將緩衝區的資料 用一個 臨時檔案的方式 儲存到磁碟 這個過程 叫做 溢寫過程 臨時檔案 叫做 溢寫檔案 3. 當MapTask結束後再對磁碟中 所有的 溢寫檔案做合併,生成最終的輸出檔案 等待reduce task來拉取資料 這個過程 叫做 merge 4. 在溢位過程及合併過程中,都要呼叫Partitioner進行分割槽和針對key排序 5. ReduceTask 根據自己分配到的分割槽號,去各自MapTask機器上拉取相應的結果分割槽資料 6. ReduceTask 會拉取同一個分割槽的資料(來自不同MapTask的結果檔案) ReduceTask 會將這些檔案在進行合併(歸併排序) 7. ReduceTask 合併成大檔案後,Shuffle 過程也就結束了 8. ReduceTask 邏輯運算過程,遍歷相同的key,並對value做reduce操作 3. 注意事項 1. Shuffle 緩衝區的大小會影響 MapReduce程式的執行效率 緩衝區越大,磁碟io的次數越少,執行速度就越快 2. 緩衝區的大小 可以通過引數調整 引數 : mapreduce.task.io.sort.mb 預設 100M 2. map task的輸出結果有效地傳送到reduce端
點選檢視Shuffle流程圖 ![](https://img2020.cnblogs.com/blog/2018294/202112/2018294-20211222163644539-412284594.png) ![](https://img2020.cnblogs.com/blog/2018294/202112/2018294-20211222163705138-138709063.png)