Hive调优相关总结

前言

我们都知道Hive默认的执行引擎是MR,在没有对Hive执行引擎改造之前(如HDP的TEZ,Hive on Spark项目),我们对Hive的调优依然只能围绕Hive本身支持的如存储格式,压缩,参数,SQL语句等方面的优化做出考虑。
存储与压缩
关于Hive存储格式和压缩方式的选择和使用,这里就不再做介绍,请参考以前博客存储格式和压缩方式
Hive 调优参数
因为Hive的默认执行引擎为MR,所以基于Hive的参数调优,主要还是MR的参数调优以及Hive客户端的一些设置

1.开启Hive map阶段及reduce压缩参数:

在MR中使用压缩需要从输入,中间,输出三个阶段去选择不同的压缩方式,输入阶段可能更看重的是数据是否支持split,支持split可以增加Map输入个数而增加计算并行度,如选择可分割的Bzip2和Lzo(Lzo压缩格式要建立索引),中间map输出要考虑下阶段reduce输入带来的压缩与解压CPU时间开销,如选择压缩解压速率较快的Snappy,最终输出如果不作为其他依赖任务的输入,更加考虑的是磁盘存储上的开销,如选择高压缩比的Bzip2

开启map阶段使用压缩参数:

set hive.exec.compress.intermediate=true
set mapred.map.output.compression=true
set mapred.map.output.compression.codec= org.apache.hadoop.io.compress.SnappyCodec

开启reduce最终输出使用压缩参数:

set hive.exec.compress.output=true 
set mapred.output.compression=true 
set mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec
set mapred.output.compression.type=BLOCK

2.设置Map与Reduce个数增加并行:

Map输入个数是根据split size大小来划分,默认是一个block块一个map,若单个文件小于一个block大小,那个也会作为一个map输入,MapReduce计算split size 大小是由computeSplitSize函数算出:

  protected long computeSplitSize(long blockSize, long minSize,
                                    long maxSize) {
   
      return Math.max(minSize, Math.min(maxSize, blockSize));
    }

可以看出,当最大值设置大于一个块大小时&

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值