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个数)。
在Hadoop MapReduce程序中,Hive如何决定Reducer的数量至关重要。默认情况下,Hive会根据两个设定参数来估算Reducer数量:hive.exec.reducers.bytes.per.reducer(默认1GB)和hive.exec.reducers.max(默认999)。实际Reducer数量通过公式计算得出:N=min(参数2,总输入数据量/参数1)。通常建议手动调整这些参数以优化性能。
3154

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



