Hive调优的目标、原则

0.426字数 585阅读 231
精选.png

1.1. 调优目标

Hive调优的目标是在不影响其他业务正常运行的前提下最大限度利用集群的物理资源,如CPU、内存、磁盘IO,使其某一项达到瓶颈。如下CPU接近瓶颈:

图片.png

1.2. 调优原则

(1)保证map扫描的数据量尽量少

减少map端扫描数量,需要控制待处理的表文件或中间文件的数据量尽量少。

优化的方式如:Hive表文件使用高效的文件格式、Hive表文件使用合适的文件压缩格式、中间文件使用合适的文件压缩格式、利用列裁剪、利用分区裁剪、使用分桶

(2)保证map传送给reduce的数据量尽量小

控制map传送给reduce的数据量,是指JOIN避免笛卡尔积、启动谓词下推、开启map端聚合功能

(3)保证map和reduce处理的数据量尽量均衡

保证map处理的数据量尽量均衡,是指使用Hive合并输入格式、必要时对小文件进行合并

保证reduce处理的数据量尽量均衡,是指解决数据倾斜问题。包括解决group by造成的数据倾斜、解决join造成的数据倾斜

(4)合理调整map和reduce占用的计算资源

合理调整map和reduce占用的计算资源,是指**通过参数设置合理调整map和reduce的内存及虚拟核数**。

根据集群总体资源情况,以及分配给当前租户的资源情况,在不影响其他业务正常运行的条件下,最大限度地利用可使用的计算资源。

(5)合理调整map和reduce的数量

合理调整map数,是指通过设置每个map处理数据量的最大和最小值来合理控制map的数量

合理调整reduce数,是指通过直接设置reduce数量或通过设置每个reduce的处理数据量来合理控制reduce的数量

(6)重用计算结果

重用计算结果,是指**将重复的子查询结果保存到中间表**,供其他查询使用,减少重复计算,节省计算资源。

(7)使用稳定成熟的Hive优化特性

使用稳定成熟的Hive优化特性,包括:**相关性优化器(****Correlation Optimizer****),基于代价的优化(****Cost-based optimization****),向量化查询引擎(****Vectorized Query Execution****),****Join****相关优化(Map Join、SMB Join),Multiple Insert特性**,**TABLESAMPLE****抽样查询**、**Limit优化**、**局部排序(SORT BY、****DISTRIBUTE BY****)。**

(8)使用高效HQL或改用MR

使用高效HQL,包括**慎用低性能的UDF和SerDe**、**优化count(distinct)**。

对于使用HQL比较冗余同时性能低下的场景,在充分理解业务需求后,改用MR效率更高。

精选.png

推荐阅读更多精彩内容