1. 程式人生 > 其它 >hive 的map, reduce數量除錯

hive 的map, reduce數量除錯

技術標籤:hivehive

場景: 執行hive sql,佔用的記憶體資源特別多, 如何去減少佔用的記憶體 cpu資源.

執行的sql只是做了一下group by操作。

步驟1:

減少map數量,合併小檔案

set mapreduce.input.fileinputformat.split.maxsize=1500000000
set mapreduce.input.fileinputformat.split.minsize=800000000
set mapreduce.input.fileinputformat.split.minsize.per.node=800000000
set mapreduce.input.fileinputformat.split.minsize.per.rack=800000000
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat      #執行 Map 前進行小檔案合併

步驟2:

減少reduce數量

hive.exec.reducers.bytes.per.reducer 預設是1G,輸入檔案如果是10G,那麼就會起10個reducer

hive.exec.reducers.max(每個sql任務最大的reduce數,預設為999)

mapred.reduce.tasks 設定固定的reduce數量

步驟3:

hive.groupby.skewindata:

group by操作是否允許資料傾斜,

預設是false,

當設定為true時,執行計劃會生成兩個map/reduce作業,第一個MR中會將map的結果隨機分佈到reduce中,達到負載均衡的目的來解決資料傾斜

結果:

從 原來的32個containers 32個cpu 32G記憶體

變成了現在6個containers 6個CPU 6G記憶體