Mapreduce 程序效率的瓶頸在於兩點:html
1)計算機性能網絡
CPU、內存、磁盤健康、網絡ide
2)I/O 操做優化性能
(1)數據傾斜優化
(2)map和reduce數設置不合理orm
(3)reduce等待太久htm
(4)小文件過多內存
(5)大量的不可分塊的超大文件it
(6)spill次數過多io
(7)merge次數過多等
1)數據輸入
(1)合併小文件:在執行mr任務前將小文件進行合併,大量的小文件會產生大量的map任務,增大map任務裝載次數,而任務的裝載比較耗時,從而致使mr運行較慢。
(2)採用ConbinFileInputFormat來做爲輸入,解決輸入端大量小文件場景。
2)map階段
(1)減小spill次數:經過調整io.sort.mb及sort.spill.percent參數值,增大觸發spill的內存上限,減小spill次數,從而減小磁盤 IO。
(2)減小merge次數:經過調整io.sort.factor參數,增大merge的文件數目,減小merge的次數,從而縮短mr處理時間。
(3)在 map 以後先進行combine處理,減小I/O。
3