- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
创建时间:2012/3/29 修改时间:2012/3/29 修改次数:0
Hadoop 集群(第14 期副刊)
——Hive 性能优化
1、性能低下根源
Hive 性能优化时,把HiveQL 当做Map/Reduce 程序来读,即从Map/Reduce 的运行角
度来考虑优化性能,从更底层思考如何优化运算性能,而不仅仅局限于逻辑代码的替换层面。
RAC (Real Application Cluster )真正应用集群就像一辆机动灵活的小货车,响应快,
Hadoop 就像吞吐量巨大的轮船,启动开销大,如果每次只做小数量的输入输出,利用率将
会很低。所以用好Hadoop 的首要任务是增大每次任务所搭载的数据量。
Hadoop 的核心能力是pariton 和sort,因而这也是优化的根本。
观察Hadoop 处理数据的过程,有几个显著的特征:
数据的大规模并不是负载重点,造成运行压力过大是因为运行数据的倾斜。
jobs 数比较多的作业运行效率相对比较低,比如即使有几百行的表,如果多次关
联多次汇总,产生十几个jobs ,将会须要30 分钟以上的时间且大部分时间被用于
作业分配,初始化和数据输出。Map/Reduce 作业初始化的时间是比较耗费时间资
源的一个部分。
在使用sum,count,max ,min 等函数时,Hadoop Map 端对表中数据的汇总去重,
能有效的解决数据倾斜问题。
count (distinct )效率较低,因为容易产生数据倾斜问题,如果是多count (distinct )
效率更低。
数据倾斜是导致效率大幅降低的主要原因,可以采用多一次Map/Reduce 的方法,
避免倾斜。
结论:避实就虚,用job 数的增加,输入量的增加,占用更多存储空间,充分利用空闲
CPU 等各种方法,分解数据倾斜造成的负担。
2 、从配置角度优化
Hive 系统内部已针对不同的查询预设定了优化方法,用户可以通过调整配置进行控制,
以下举例介绍部分优化的策略以及优化控制选项。
2.1 列裁剪
Hive 在读数据的时候,可以只读取查询中所需要用到的列,而忽略其它列。
例如,若有以下查询:
Select a,b From Q Where e<10;
在实施此项查询中,Q 表有 5 列(a,b ,c,d,e ),Hive 只读取查询逻辑中真实需要
的3 列a、b 、e,而忽略列c,d ;这样做节省了读取开销,中间表存储开销和数据整合开销。
河北工业大学——软件工程与理论实验室 整理:虾皮 1
创建时间:2012/3/29 修改时间:2012/3/29 修改次数:0
列裁剪所对应的参数项为:hive.optimize.cp=true (默认值为真)
2.2 分区裁剪
可以在查询的过程中减少不必要的分区。
例如,若有以下查询:
Select * From (Select a1,Count(1) From T Group By a1) subq Where subq.prtn=100;
Select * From T1 Join (Select * From T2) subq On (T1.a1=subq.a2) Where subq.prtn=100;
此查询语句若将“subq.prtn=100 ”条件放入子查询中更为高效,可以减少读入的分区
数目。
Hive 自动执行这种裁剪优化。
分区参数为:hive.optimize.pruner=true (默认值为真)
2.3 Join 操作
在编写带有join 操作的代码语句时,应该将条目少的表/子查询放在Join 操作符的左边。
因为在Reduce 阶段,位于Join 操作符左边的表的内容会被加载进内存,载入条目较少的表
可以有效减少OOM (out of memory )即内存溢出。所以对于同一个key 来说,对应的value
值小的放前,大的放后,这便是“小表放前
您可能关注的文档
- Commerce B2B标准版用户使用手册.pdf
- CSS SPA系统SaaS云方案系统架设技术方案.pdf
- CSS公司宣传册英文版.pdf
- DBaaS_数据库云趋势_v09_简_新模板_打印.pdf
- DF-GRASSU-最IN的多人视频合拍社区0526.pdf
- DF抱抱鲜海鲜即食.pdf
- DF清华种子基金项目.pdf
- DF天空垂直电商.pdf
- ECstore产品安全白皮书.pdf
- FY17 PaaSIaaS解决方案概览 for region sales.pdf
- 西门子 SINAUT MD4使用手册.pdf
- 西门子 SINAUT 远程编程手册.pdf
- iot-gateway-用户使用说明书手册.pdf
- JTT-IOMxxxxS-TI用户使用说明书手册用户使用说明书手册.pdf
- 2024年四川省成都市青白江区中考历史二模试卷(含答案).pdf
- 2024年四川省广安市广安区中考二模道德与法治试题(原卷版).pdf
- PCA-100_V40_UM_EN_2用户使用说明书手册.pdf
- PCA-100_V41_UM_2用户使用说明书手册.pdf
- PCO-150_V54_RevA_UM_2用户使用说明书手册.pdf
- p071-e1-04_c200hx_hg_he_cs1_replace用户使用说明书手册.pdf
文档评论(0)