【备忘】hive 调优

  • 时间:
  • 浏览:
  • 来源:互联网

–1.开启hive中间传输数据压缩功能
set hive.exec.compress.intermediate=true;
–2)开启mapreduce中map输出压缩功能
set mapreduce.map.output.compress=true;
–3)设置mapreduce中map输出数据的压缩方式
set mapreduce.map.output.compress.codec= org.apache.hadoop.io.compress.SnappyCodec;
–4.开启hive最终输出数据压缩功能
set hive.exec.compress.output=true;
–5. 开启mapreduce最终输出数据压缩
set mapreduce.output.fileoutputformat.compress=true;
–11. 设置自动选择Mapjoin
set hive.auto.convert.join = true;
–12. 大表小表的阈值设置(默认25M以下认为是小表):
set hive.mapjoin.smalltable.filesize=25123456;
–13. 是否在Map端进行聚合,默认为True
set hive.map.aggr = true;
–14. 在Map端进行聚合操作的条目数目
set hive.groupby.mapaggr.checkinterval = 10000000;
–15. 有数据倾斜的时候进行负载均衡(默认是false)
set hive.groupby.skewindata = true;
–16. 开启动态分区功能(默认true,开启)
set hive.exec.dynamic.partition=true;
–17. 设置为非严格模式(动态分区的模式,默认strict,表示必须指定至少一个分区为静态分区,nonstrict模式表示允许所有的分区字段都可以使用动态分区。)
set hive.exec.dynamic.partition.mode=nonstrict;
–18. 在所有执行MR的节点上,最大一共可以创建多少个动态分区。
set hive.exec.max.dynamic.partitions=10000000;
–19. 在每个执行MR的节点上,最大可以创建多少个动态分区。该参数需要根据实际的数据来设定。比如:源数据中包含了一年的数据,即day字段有365个值,那么该参数就需要设置成大于365,如果使用默认值100,则会报错。
set hive.exec.max.dynamic.partitions.pernode=10000000;
–19. 在linux系统当中,每个linux用户最多可以开启1024个进程,每一个进程最多可以打开2048个文件,即持有2048个文件句柄,下面这个值越大,就可以打开文件句柄越大
set hive.exec.max.created.files=100000;
–20. 当有空分区生成时,是否抛出异常。一般不需要设置。
set hive.error.on.empty.partition=false;
–21. 在map执行前合并小文件,减少map数:
set mapred.max.split.size=112345600;
set mapred.min.split.size.per.node=112345600;
set mapred.min.split.size.per.rack=112345600;
set hive.input.format= org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
–这个参数表示执行前进行小文件合并,前面三个参数确定合并文件块的大小,大于文件块大小128m的,按照128m来分隔,小于128m,大于100m的,按照100m来分隔,把那些小于100m的(包括小文件和分隔大文件剩下的),进行合并。
–22. 设置map的个数
–set mapreduce.job.reduces =10;
–23. 每个Reduce处理的数据量默认是256MB,100% 99% code2 , reduce 999
hive.exec.reducers.bytes.per.reducer=300000000;
–24. 每个任务最大的reduce数,默认为1009
set hive.exec.reducers.max=3000
–25. 设置每个job的Reduce个数
–set mapreduce.job.reduces = 15;
set hive.exec.parallel=true; --打开任务并行执行
set hive.exec.parallel.thread.number=8; --同一个sql允许最大并行度,默认为8。
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.max.dynamic.partitions.pernode=1000;
————————————————
版权声明:本文为CSDN博主「槐序i」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/spark9527/article/details/118960384

本文链接http://metronic.net.cn/metronic/show-22234.html