【Hive】Hive调优梳理

Hive调优梳理:

  • 高效的文件格式
  • 中间压缩格式
  1. GZip压缩率高,消耗CPU更高
  2. Snappy压缩率和CPU消耗更均匀
  • 根据业务创建分区表
  • 根据业务创建分桶表

 

  • 保证map扫描尽量少
  1. 高效的文件格式
  2. 压缩格式
  3. 列裁剪
  4. 分区裁剪
  5. 分桶
  • 保证map传给reduce的数据量尽量小

     1.  避免笛卡尔积

     2.  谓词下推

set hive.optimize.ppd=true

一种逻辑优化,尽早对底层数据进行过滤以减少后续以减少后续需要处理的数据量

     3.  map端聚合功能

set hive.map.aggr=true

在map中会做部分聚合操作,能够使map传送给reduce的数据量大大减少

    4.  使用Hive合并输入格式

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

    5.  合并小文件

 

  • 保证map和reduce处理的数据量尽量均衡
  • 合理调整map和reduce占用的计算资源,调整数量
  1. 调整map和reduce的内存
  2. 调整map和reduce的虚拟核数

mapreduce.map.cpu.vcores & mapreduce.reduce.cpu.vcores

(不要超过yarn.nodemanager.resource.cpu-vcores)

  • 使用稳定成熟的Hive优化特性

      1.   相关性优化器(set hive.optimize.correlation=true) 输入相关性、作业流程相关性

      2.   基于代价的优化(set hive.cbo.enable=true) 基于(FS读写、CPU)等代价对查询计划优化

      3.   向量化查询引擎(set hive.vectorized.execution.enabled=true)

对数据处理是以行为行为,依次处理。向量化特性通过每次处理1024行数据,列方式处理,从而减少了方法的调用,降低了CPU消耗,提高利用率(减少扫描、过滤、聚合和关联的CPU使用率)

    4.   Join相关优化(mapjoin,semi-join)

    5.   Multiple Insert特性

    6.   TableSample抽样查询

    7.   Limit优化

    启动limit优化,使用limit不再是全表查出,而是抽样查询。

set hive.limit.optimize.enable=true;

set hive.limit.row.max.size=10000;

set hive.limit.optimize.limit.file=10;

    8.   局部排序(Sort by,Distribute by)

 

关键参数:

  • map内存大小:maprecue.map.memory.mb
  • reduce内存大小:mapreduce.reduce.memory.mb
  • Container内存大小:yarn.scheduler.maximum-allocation-mb
  • map虚拟核数:mapreuce.map.cpu.vcores
  • reduce虚拟核数:mapreduce.reduce.cpu.vcores
  • Container虚拟核数:yarn.scheduler.maximum-allocation-vcores
  • Map处理的最大数据量:mapreduce.input.fileinputformat.split.maxsize
  • 每个节点Map分片最小值:mapred.min.split.size.per.node
  • 每个机架Map分片最小值:mapred.min.split.size.per.rack
  • 每个reduce任务处理的数据量:hive.exec.reducers.bytes.per.reducer
  • 最大reduce数:hive.exec.reducers.max
  • reduce任务数量:mapred.reduce.tasks

经验:

  1. 当输入数据量较大时减少Map处理的最大数据量
  2. 当大量重复数据做去重时减少Reduce数量
  3. 当大量匹配记录做关联时增加Reduce数量
  4. 当出现Join倾斜时打开Join倾斜优化开关
  5. 当Join和Group By字段一致时打开相关性能优化开关
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值