Shuffle對MapReduce性能調優

ShuffleMapReduce性能調優:

Shuffle和排序 性能

MapReduce確保每個reduce的輸出都按鍵排序,系統執行排序的過程---------map輸出做爲輸入傳給reduce--------稱爲shuffle spa

Shuffle過程是MapReduce的」心臟」,也被稱爲奇蹟發生的地方 線程

1. 每一個map有一個環形內存緩衝區,用於存儲任務的輸出。默認大小100MB(io.sort.mb屬性),一旦達到閥值0.8(io.sort.spill.percent),一個後臺線程把內容寫到(spill)磁盤的指定目錄(mapred.local.dir)下的新建的一個溢出寫文件。
2. 寫磁盤前,要partition,sort。若是有combiner,combine排序後數據。
  a)partition的意義在於能夠分區管理,分類導出數據;例如男女,我須要分紅兩個文件,我就能夠設置partition來區分,reduceTask至少2個來分別運行
  b)運行conbiner的意義在因而map輸出更緊湊,使得寫到本地磁盤和傳給reducer的數據更少
3. 等最後記錄寫完,合併所有溢出寫文件爲一個分區且排序的文件。
排序

補充: 內存

  1. Reducer經過Http方式獲得輸出文件的分區。
  2. TaskTracker爲分區文件運行Reduce任務。複製階段把Map輸出複製到Reducer的內存或磁盤。一個Map任務完成,Reduce就開始複製輸出。
  3. 排序階段合併map輸出。而後走Reduce階段。
相關文章
相關標籤/搜索