1. 程式人生 > 其它 >MapReduce Shuffle機制

MapReduce Shuffle機制

Mapper端:每個mapTask有一個環形緩衝區,用於儲存map任務的輸出。預設大小100M(io.sort.mb屬性),一旦達到閥值0.8(io.sort.spill.percent),一個後臺執行緒把內容寫到(spill)磁碟的指定目錄(mapred.local.dir)下的新建的一個溢寫檔案。寫磁碟前,會在記憶體裡(快排)進行partition, sort, combiner(如果配置了combiner)操作,如果有後續的資料,將會繼續寫環形緩衝區,最終寫入下一個溢位檔案中。等最後記錄寫完,合併(歸併排序)全部溢位檔案為一個分割槽且排序的檔案。如果在最終合併時,被合併的檔案大於等於3個,則合併完再執行一次combiner操作,否則不會。
  Reducer端:Reducer通過http方式得到輸出檔案的分割槽。NodeManager為分割槽檔案執行Reduce任務,複製階段把Map輸出複製到Reducer的記憶體或磁碟。一旦Map任務完成,Reducer就開始複製。排序階段合併map輸出,然後走Reduce階段。

參考資料:http://www.atguigu.com/bigdata_video.shtml#bigdata