shuffle
是map
和reduce
中間的資料排程過程,包括:快取
、分割槽
、排序
等。
shuffle
資料排程過程:
map task
處理hdfs
檔案,呼叫map()
方法,map task
的collect thread
將map()
方法結果放入環形緩衝區
(預設大小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...