一個 mr 作業跑的比較慢,如何來優化。


 

mr跑的慢可能有很多原因,如:數據傾斜、map和reduce數設置不合理、reduce等待過久、小文件過多、spill 次數過多、 merge 次數過多等。

1、解決數據傾斜:數據傾斜可能是partition不合理,導致部分partition中的數據過多,部分過少。可通過分析數據,自定義分區器解決。

2、合理設置map和reduce數:兩個都不能設置太少,也不能設置太多。太少,會導致task等待,延長處理時間;太多,會導致 map、 reduce 任務間競爭資源,造成處理超時等錯誤。

3、設置map、reduce共存:調整slowstart.completedmaps參數,使map運行到一定程度后,reduce也開始運行,減少 reduce 的等待時間。

4、合並小文件:在執行mr任務前將小文件進行合並,大量的小文件會產生大量的map任務,增大map任務裝載次數,而任務的裝載比較耗時,從而導致 mr 運行較慢。

5、減少spill次數:通過調整io.sort.mb及sort.spill.percent參數值,增大觸發spill的內存上限,減少spill 次數,從而減少磁盤 IO。

6、減少merge次數:通過調整io.sort.factor參數,增大merge的文件數目,減少merge的次數,從而縮短mr處理時間。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM