Hadoop实战培训教程19_Hadoop集群环境搭建配置_Hive性能优化
Hadoop实战培训教程19_Hadoop集群环境搭建配置_Hive性能优化
1、性能低下根源
Hive性能优化时,把HiveQL当做Map/Reduce程序来读,即从Map/Reduce的运行角度来考虑优化性能,从更底层思考如何优化运算性能,而不仅仅局限于逻辑代码的替换层面。
RAC(Real Application Cluster)真正应用集群就像一辆机动灵活的小货车,响应快,Hadoop就像吞吐量巨大的轮船,启动开销大,如果每次只做小数量的输入输出,利用率将会很低。所以用好Hadoop的首要任务是增大每次任务所搭载的数据量。
Hadoop的核心能力是pariton和sort,因而这也是优化的根本。
1193
观察Hadoop处理数据的过程,有几个显著的特征:
数据的大规模并不是负载重点,造成运行压力过大是因为运行数据的倾斜。
jobs数比较多的作业运行效率相对比较低,比如即使有几百行的表,如果多次关联多次汇总,产生十几个jobs,将会须要30分钟以上的时间且大部分时间被用于作业分配,初始化和数据输出。Map/Reduce作业初始化的时间是比较耗费时间资源的一个部分。
在使用sum,count,max,min等函数时,Hadoop Map端对表中数据的汇总去重,能有效的解决数据倾斜问题。
count(distinct)效率较低,因为容易产生数据倾斜问题,如果是多count(distinct)效率更低。
数据倾斜是导致效率大幅降低的主要原因,可以采用多一次Map/Reduce的方法,避免倾斜。
结论:避实就虚,用job数的增加,输入量的增加,占用更多存储空间,充分利用空闲CPU等各种方法,分解数据倾斜造成的负担。
2、从配置角度优化
Hive系统内部已针对不同的查询预设定了优化方法,用户可以通过调整配置进行控制,以下举例介绍部分优化的策略以及优化控制选项。