Hive調優參數配置


Hive進行大數據處理的過程中經常遇到一個任務跑幾個小時或者內存溢出等問題,平時會任務執行的遇到的問題
進行參數的調整配置,收集整理的配置參考如下:
set dfs.namenode.handler.count=20;
set mapred.task.timeout=36000000;
set hive.cbo.enable=true;
set hive.compute.query.using.stats=true;
set hive.stats.fetch.column.stats=true;
set hive.stats.fetch.partition.stats=true;
set hive.exec.parallel.thread.number=8;
set hive.auto.convert.join=true;
set hive.mapjoin.smalltable.filesize=25000;
set hive.merge.mapfiles=true;
set hive.merge.mapredfiles=true;
set hive.merge.size.per.task=256000000;
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;
set hive.merge.size.per.task=256000000;
set hive.merge.smallfiles.avgsize=256000000;
set hive.map.aggr.hash.percentmemory=0.25;
set mapred.map.tasks.speculative.execution=true;
set mapred.reduce.tasks.speculative.execution=true;
set hive.mapred.reduce.tasks.speculative.execution=true; 
 
set dfs.namenode.handler.count=20; 
nameNode有一個工作線程池用來處理客戶端的遠程過程調用及集群守護進程的調用。處理程序數量越多意味着要更大的池來處理來自不同DataNode的並發心跳以及客戶端並發的元數據操作。對於大集群或者有大量客戶端的集群來說,通常需要增大參數dfs.namenode.handler.count的默認值10。設置該值的一般原則是將其設置為集群大小的自然對數乘以20,即20logN,N為集群大小。
 
set mapred.task.timeout=36000000;
job的超時屬性,默認600000ms,即600s,可以通過設置該屬性防止死循環,具體大小可根據任務的具體情況進行設定。
 
set hive.cbo.enable=true;
如果數據已經根據相同的key做好聚合,則去除多余的map/reduce作業
 
set hive.cbo.enable=true;
set hive.compute.query.using.stats=true;
set hive.stats.fetch.column.stats=true;
set hive.stats.fetch.partition.stats=true;
COST BASED QUERY OPTIMIZATION(CBO) cbo可以優化hive的每次查詢,使用CBO,需要開啟上面四個選項。
 


免責聲明!

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



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