hadoop的企業優化

2022-06-04 09:42:06 字數 1896 閱讀 2440

前言:

mapreduce程式的效率的瓶頸在於兩點:

計算機效能:

cpu、記憶體、磁碟健康、網路

i/o操作:

資料傾斜

map和reduce數量設定不合理

map的執行時間太長,導致reduc的等待過久

小檔案過多

大量的補課分塊的超大檔案

spill(溢寫)次數過多

merge(合併)次數過多

mapreduce優化方法

資料輸入:

(1)合併小檔案:在執行任務前將小檔案進行合併

(2)採用combinetextinputformat來作為輸入,解決輸入端大量小檔案的場景。將多個小檔案從邏輯上規劃到乙個切片中,這樣,多個小檔案就可以交給乙個 maptask。

combinetextinputformat.setmaxinputsplitsize(job, 4194304);// 4m

combinetextinputformat.setmininputsplitsize(job, 2097152);// 2m

job.setinputformatclass(combinetextinputformat.class

map階段:

(1)減少溢寫(spill)操作:通過調整 io.sort.mb 及 sort.spill.percent 引數值,增大觸發spill 的記憶體上限,減少 spill 次數,從而減少磁碟 io。

(2)減少合併(merge)操作:通過調整 io.sort.factor 引數,增大 merge 的檔案數目,減少 merge 的次數,從而縮短 mr 處理時間。

(3)在不影響業務邏輯的前提下,先進行combine處理,減少i/o。

reduce階段:

(1)合理設定map和reduce的數量

(2)設定map、reduce共存:調整 slowstart.completedmaps 引數,使 map 執行到一定程度後,reduce 也開始執行,減少reduce 的等待時間。

(3)規避使用reduce

(4)合理使用reduce端的buffer

i/o傳輸:

(1)採用資料壓縮的方法,減少網路io時間

(2)使用sequencefile二進位制檔案

資料傾斜問題:

(1)抽樣和範圍分割槽

(2)自定義分割槽

(3)combine

(4)採用map join,盡量避免reduce join

jvm重用:

對於大量的小檔案job,開啟jvm重用會減少45%執行時間。

具體設定:mapreduce.job.jvm.numtasks 值在 10-20 之間。

Hadoop 企業優化

mapreduce優化方法主要從六個方面考慮 資料輸入 map階段 reduce階段 io傳輸 資料傾斜問題和常用的調優引數。2.6.1 資源相關引數 以下引數是在使用者自己的mr應用程式中配置就可以生效 mapred default.xml 配置引數 引數說明 mapreduce.map.memo...

Hadoop 六 Hadoop企業優化

mapreduce 程式效率的瓶頸在於兩點 cpu 記憶體 磁碟健康 網路 1 資料傾斜 2 map和reduce數設定不合理 3 map執行時間太長,導致reduce等待過久 4 小檔案過多 5 大量的不可分塊的超大檔案 6 spill次數過多 7 merge次數過多等。mapreduce優化方法...

12)Hadoop企業優化

mapreduce 跑的慢的原因 mapreduce效率的瓶頸主要有兩點 mapreduce優化方法 mapreduce優化方法主要從六個方面考慮 資料輸入 map階段 reduce階段 io傳輸 資料傾斜問題和常用的調優引數 map階段 reduce階段 io傳輸 使用sequencefile二進...