1. 程式人生 > >hive優化(1)

hive優化(1)

Hive在map端存在三個配置引數:set mapred.max.split.size=256000000;

set mapred.min.split.size.per.node=256000000;

set mapred.min.split.size.per.rack=256000000;

set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

1.第一個 set mapred.max.split.size 叢集會通過這個設定來確定啟動多少個map,假設有兩個檔案大小分別為(256M,280M)被分配到節點A,那麼會啟動兩個map,剩餘的檔案大小為10MB和35MB因為每個大小都不足241MB會先做保留 。

 

2.第二個 set mapred.min.split.size.per.node 看剩餘的大小情況並進行合併,如果值為1,表示a中每個剩餘檔案都會自己起一個map,這裡會起兩個,如果設定為大於45*1024*1024則會合併成一個塊,併產生一個map。

如果mapred.min.split.size.per.node為10*1024*1024,那麼在這個節點上一共會有4個map,處理的大小為(245MB,245MB,10MB,10MB,10MB,10MB),餘下9MB ;
如果mapred.min.split.size.per.node為45*1024*1024,那麼會有三個map,處理的大小為(245MB,245MB,45MB) ,實際中mapred.min.split.size.per.node無法準確地設定成45*1024*1024,會有剩餘並保留帶下一步進行判斷處理 ;

如果mapred.min.split.size.per.node為45*1024*1024,那麼會有三個map,處理的大小為(245MB,245MB,45MB) ,實際中mapred.min.split.size.per.node無法準確地設定成45*1024*1024,會有剩餘並保留帶下一步進行判斷處理 ;

3.第三個 set mapred.min.split.size.per.rack 對2中餘出來的檔案與其它節點餘出來的檔案根據mapred.min.split.size.per.rack大小進行判斷是否合併,對再次餘出來的檔案獨自產生一個map處理.

4.set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat 將多個小檔案打包作為一個整體的inputsplit,減少map任務數