Hive性能优化与压缩技术详解
一、Hive性能优化
1.1 调整Reducer数量
在Hive中,Reducer数量的选择对性能有重要影响。默认情况下,Hive会根据输入数据大小估算Reducer数量,但在某些情况下,这种估算可能不准确。例如,查询的Map阶段可能产生比输入数据量多得多的数据,或者Map函数过滤了大量数据。
为了进行实验,可以将Reducer数量设置为固定值,而不是让Hive自动计算。Hive默认估算的Reducer数量是3个,可以通过设置 mapred.reduce.tasks 为不同的值,来确定更多或更少的Reducer是否能带来更快的运行时间。需要注意的是,性能测试会受到外部因素的影响,如其他用户同时运行的作业,而且Hadoop启动和调度Map和Reduce任务会有几秒钟的开销,特别是在处理小作业时,这些因素需要考虑在内。
另外, hive.exec.reducers.max 属性对于控制共享集群上大作业的资源利用率很有用。Hadoop集群有固定数量的Map和Reduce“插槽”用于分配任务,一个大作业可能会占用所有插槽,阻止其他作业启动。可以在 $HIVE_HOME/conf/hive-site.xml 中设置该属性,建议的计算公式为:
(Total Cluster Reduce Slots * 1.5) / (avg number of queries running)
其中,1.5的乘数是为了防止集群资源利用不足。
超级会员免费看
订阅专栏 解锁全文
7441

被折叠的 条评论
为什么被折叠?



