有没有办法在运行时根据处理节点的总数设置此信息?
job.setNumReduceTasks( NO_OF_REDUCERS );
所以,让我们说如果我在个人笔记本电脑上编译我的代码只配置了节点,那么它应该将reducers的数量设置为1.但是,如果我为一个真正的大型集群编译它,那么它应该相应地设置。
答案 0 :(得分:1)
检查org.apache.hadoop.mapreduce.ClusterMetrics
;应该包含获取您正在寻找的信息的函数。我的笔记中有其他的东西;但是这应该提供您正在寻找的群集信息以及其他一些细节。
我正在查看减速器的数量,并计划使用getReduceSlotCapacity
函数来了解作业可以消耗多少减速器。
HTH
答案 1 :(得分:1)
实际创建的减少次数取决于作业的输入和群集容量。所以在某种程度上,你不必担心这一点。只是不要硬编码num_reducers值。它会在运行时相应选择。
此外,您可以通过命令行传递值(即-D mapred.reduce.tasks)来控制在运行时生成的缩减。