最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

[Hive] 关于Hive优化的四种方法总结

[复制链接]
跳转到指定楼层
楼主
发表于 2019-6-26 21:07:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
问题导读:
1、Hive整体架构优化点有哪些?
2、如何在MR阶段进行优化?
3、Hive在SQL中如何优化?
4、Hive框架平台中如何优化?



一、整体架构优化
现在hive的整体框架如下,计算引擎不仅仅支持Map/Reduce,并且还支持Tez、Spark等。根据不同的计算引擎又可以使用不同的资源调度和存储系统。


整体架构优化点:

1、根据不同业务需求进行日期分区,并执行类型动态分区。
相关参数设置:
0.14中默认hive.exec.dynamic.partition=ture

2、为了减少磁盘存储空间以及I/O次数,对数据进行压缩
相关参数设置:
job输出文件按照BLOCK以Gzip方式进行压缩。
[AppleScript] 纯文本查看 复制代码
?
1

2

3

mapreduce.output.fileoutputformat.compress=true
mapreduce.output.fileoutputformat.compress.type=BLOCK
mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.GzipCodec







map输出结果也以Gzip进行压缩。
[AppleScript] 纯文本查看 复制代码
?
1

2

mapreduce.map.output.compress=true
mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.GzipCodec







对hive输出结果和中间结果进行压缩。
[AppleScript] 纯文本查看 复制代码
?
1

2

hive.exec.compress.output=true
hive.exec.compress.intermediate=true







3、hive中间表以SequenceFile保存,可以节约序列化和反序列化的时间

相关参数设置:
hive.query.result.fileformat=SequenceFile

4、yarn优化,在此不再展开,后面专门介绍。

二、MR阶段优化

hive操作符有:


执行流程为:


reduce切割算法:

相关参数设置,默认为:
hive.exec.reducers.max=999
hive.exec.reducers.bytes.per.reducer=1G
reduce task num=min{reducers.max,input.size/bytes.per.reducer},可以根据实际需求来调整reduce的个数。

三、JOB优化
1、本地执行

默认关闭了本地执行模式,小数据可以使用本地执行模式,加快执行速度。
相关参数设置:
hive.exec.mode.local.auto=true

默认本地执行的条件是,hive.exec.mode.local.auto.inputbytes.max=128MB, hive.exec.mode.local.auto.tasks.max=4,reduce task最多1个。 性能测试:
数据量(万)     操作     正常执行时间(秒)     本地执行时间(秒)
170     group by     36     16
80     count     34     6

2、mapjoin

默认mapjoin是打开的, hive.auto.convert.join.noconditionaltask.size=10MB

装载到内存的表必须是通过scan的表(不包括group by等操作),如果join的两个表都满足上面的条件,/*mapjoin*/指定表格不起作用,只会装载小表到内存,否则就会选那个满足条件的scan表。

四、SQL优化

整体的优化策略如下:
  •     去除查询中不需要的column
  •     Where条件判断等在TableScan阶段就进行过滤
  •     利用Partition信息,只读取符合条件的Partition
  •     Map端join,以大表作驱动,小表载入所有mapper内存中
  •     调整Join顺序,确保以大表作为驱动表
  •     对于数据分布不均衡的表Group by时,为避免数据集中到少数的reducer上,分成两个map-reduce阶段。第一个阶段先用Distinct列进行shuffle,然后在reduce端部分聚合,减小数据规模,第二个map-reduce阶段再按group-by列聚合。
  •     在map端用hash进行部分聚合,减小reduce端数据处理规模。


五、平台优化
1、hive on tez


2、spark SQL大趋势


总结
上面主要介绍一些优化思想,有些优化点没有详细展开,后面分别介绍yarn的优化细节、SQL详细的优化实例以及我们在Tez、spark等框架优化结果。最后用一句话共勉:边coding,边优化,优化无止境。

来源:github
作者:jacksu

楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-25 04:08

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表