MapReduce框架中的Shuffle機制

2022-09-05 14:48:21 字數 1217 閱讀 8465

shufflemapreduce中間的資料排程過程,包括:快取分割槽排序等。

shuffle資料排程過程:

map task處理hdfs檔案,呼叫map()方法,map taskcollect threadmap()方法結果放入環形緩衝區(預設大小100m)

當環形緩衝區達到閾值(80%),將會觸發溢位操作,split thread執行緒會呼叫hashpartitioner或者自定義的分割槽規則,對緩衝區內容進行分割槽,區內檔案內容有序

當環形緩衝區再次達到閾值,會再次觸發溢位操作,重複步驟2

map()方法執行結束後,會生成一系列分割槽且區內有序的溢位小檔案。該溢位小檔案不會直接交給reduce()方法,會進行merge操作,將溢位的小檔案按分割槽進行合併,生成乙個完整的分割槽且區內有序的大檔案。

每個reduce task會獲取每個map task階段最終結果檔案的指定分割槽檔案內容,進行歸併排序操作,按照key排序,生成乙個聚合組

每個聚合組呼叫一次reduce()方法,key為這一聚合組的相同key,values是這一聚合組的所有value的迭代器。

生成最終結果檔案。

shuffle資料排程過程(大圖鏈結):

MapReduce框架原理

mapreduce工作流程 reduce端 2 流程詳解 上面的流程是整個mapreduce最全工作流程,但是shuffle過程只是從第7步開始到第15步結束,具體shuffle過程詳解,如下 1 maptask 收集我們的 map 方法輸出的 kv對,放到記憶體緩衝區中 2 從記憶體緩衝區不斷溢位...

MapReduce 框架原理

1.1 自定義bean物件實現序列化介面 乙個job在map階段並行度由客戶端在提交job時的切片數決定 每乙個split切片分配乙個 maptask 並行例項處理 預設情況,切片大小 blocksize 示例 a.txt line1 rich learning form line2 intelli...

Mapreduce框架的相關問題

jobtracker的單點故障 jobtracker和hdfs的namenode一樣也存在單點故障,單點故障一直是hadoop被人詬病的大問題,為什麼hadoop的做的檔案系統和mapreduce計算框架都是高容錯的,但是最重要的管理節點的故障機制卻如此不好,我認為主要是namenode和jobtr...