搜索
搜 索
本版
文章
帖子
用户
图文精华
hadoop-2.6.0+zookeeper-3.4.6+hbase-1.0.0+hive-1.1.0完全分布 ...
首页
Portal
专题
BBS
面试
办公|编程助手
更多
登录
注册
用户组:游客
主题
帖子
云币
我的帖子
我的收藏
我的好友
我的勋章
设置
退出
导读
淘贴
博客
群组
社区VIP
APP下载
今日排行
本周排行
本周热帖
本月排行
本月热帖
会员排行
About云-梭伦科技
»
专题
›
技术学习(版主发帖区)
›
大数据学习
›
Hive|数据仓库
›
总结型
›
关于Hive优化的四种方法总结
0
4
8
分享
关于Hive优化的四种方法总结
levycui
2016-8-30 13:57:50
发表于
总结型
[显示全部楼层]
只看大图
阅读模式
关闭右栏
4
17320
本帖最后由 levycui 于 2016-8-30 14:10 编辑
问题导读:
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方式进行压缩。
[mw_shl_code=applescript,true]mapreduce.output.fileoutputformat.compress=true
mapreduce.output.fileoutputformat.compress.type=BLOCK
mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.GzipCodec[/mw_shl_code]
map输出结果也以Gzip进行压缩。
[mw_shl_code=applescript,true]mapreduce.map.output.compress=true
mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.GzipCodec[/mw_shl_code]
对hive输出结果和中间结果进行压缩。
[mw_shl_code=applescript,true]hive.exec.compress.output=true
hive.exec.compress.intermediate=true[/mw_shl_code]
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
本帖被以下淘专辑推荐:
·
大数据优化专题
|
主题: 104, 订阅: 6
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
已有(4)人评论
电梯直达
正序浏览
makun
发表于 2016-8-31 09:05:47
辛苦了 感谢分享
回复
使用道具
举报
显身卡
wsq_strive
发表于 2016-8-31 09:18:32
辛苦了 整理的很好!
回复
使用道具
举报
显身卡
QIDOUDOU
发表于 2016-8-31 09:25:45
辛苦了 感谢分享
回复
使用道具
举报
显身卡
zhujun182104906
发表于 2016-8-31 09:40:53
分析的很好
回复
使用道具
举报
显身卡
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
最佳新人
积极上进,爱好学习
热心会员
经常帮助其他会员答疑
发表新帖
levycui
超级版主
关注
653
主题
1166
帖子
97
粉丝
TA的主题
人工智能,助力书写数字金融大文章
2024-9-14
开源模型超过最强闭源模型,Llama 3.1颠覆AI生态
2024-7-25
慈不掌兵,我被下属反向PUA了
2024-5-21
字节三面过程,最终还是凉了
2024-4-25
用户画像算法:历史、现状与未来
2024-4-2
24小时热文
kafka面试题精选
Nebula Flink Connector 在实时 ETL 的实践
Apache Doris 用户案例集
国家电网公司主数据管理系统技术规范
企业的主数据建设方法论与实践
关闭
推荐
/2
中文版ChatGPT
1.无需魔法 2.提高编程效率 3.提高文档能力
查看 »
新手帮助
新手帮助:注册遇到问题,领取资源,加入铁粉群,不会使用搜索,如何获取积分等
查看 »
意见
反馈