hive调优系列-1.调优须知
1、对于大数据计算引擎来说:数据量大不是问题,数据倾斜是个问题。
2、Hive的复杂HQL底层会转换成多个MapReduce Job并行或者串行执行,Job数比较多的作业运行效率相对比较低,比如即使只有几百行数据的表,如果多次关联多次汇总,产生十几个Job,耗时很长。原因是MapReduce作业初始化的时间是比较长的。
3、在进行Hive大数据分析时,常见的聚合操作比如sum,count,max,min,UDAF等,不怕数据倾斜问题,MapReduce在Map阶段的预聚合操作,使数据倾斜不成问题。
4、好的建表设计,模型设计事半功倍。
5、设置合理的MapReduce的Task并行度,能有效提升性能。(比如,10w+数据量级别的计算,用100个reduceTask,那是相当的浪费,1个足够,但是如果是亿级别的数据量,那么1个Task又显得捉襟见肘)
6、了解数据分布,自己动手解决数据倾斜问题是个不错的选择。这是通用的算法优化,但算法优化有时不能适应特定业务背景,开发人员了解业务,了解数据,可以通过业务逻辑精确有效的解决数据倾斜问题。
7、数据量较大的情况下,慎用count(distinct),group by容易产生倾斜问题。
8、对小文件进行合并,是行之有效的提高调度效率的方法,假如所有的作业设置合理的文件数,对任务的整体调度效率也会产生积极的正向影响
9、优化时把握整体,单个作业最优不如整体最优。