Hadoop MapReduce程序中,reducer个数的设定极大影响执行效率,这使得Hive怎样决定reducer个数成为一个关键问题。遗憾的是Hive的估计机制很弱,不指定reducer个数的情况下,Hive会猜测确定一个reducer个数,基于以下两个设定:
1. hive.exec.reducers.bytes.per.reducer(默认为1000^3)
2. hive.exec.reducers.max(默认为999)
计算reducer数的公式很简单:N=min(参数2,总输入数据量/参数1)
通常情况下,有必要手动指定reducer个数。考虑到map阶段的输出数据量通常会比输入有大幅减少,因此即使不设定reducer个数,重设参数2还是必要的。
依据Hadoop的经验,可以将参数2设定为0.95*(集群中TaskTracker个数)。

HadoopMapReduce中的reducer数量对执行效率至关重要。Hive在未指定时会基于hive.exec.reducers.bytes.per.reducer和hive.exec.reducers.max参数猜测reducer数。通常建议手动设置,尤其是在集群规模较大时,可以将hive.exec.reducers.max设为0.95*TaskTracker个数,以优化性能。
788

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



