有没有办法在运行时根据处理节点的总数设置此信息?如何根据集群中处理节点的数量设置运行时减速器的数量
job.setNumReduceTasks(NO_OF_REDUCERS);
所以,让我们说,如果我编译我的代码,在个人的笔记本电脑刚刚节点配置,那么就应该设置减速机的数量为1。但是,如果我编译它为一个真正的大集群,那么它应该相应地设置。
有没有办法在运行时根据处理节点的总数设置此信息?如何根据集群中处理节点的数量设置运行时减速器的数量
job.setNumReduceTasks(NO_OF_REDUCERS);
所以,让我们说,如果我编译我的代码,在个人的笔记本电脑刚刚节点配置,那么就应该设置减速机的数量为1。但是,如果我编译它为一个真正的大集群,那么它应该相应地设置。
检入org.apache.hadoop.mapreduce.ClusterMetrics
;它应该包含函数来获取您要查找的信息。我在笔记中有其他的东西;但是这应该提供您正在查找的群集信息以及一些其他详细信息。
我正在研究减速器的数量,并计划使用getReduceSlotCapacity
函数来了解作业可以消耗多少个减速器。
HTH
依赖于输入到作业和簇容量的降低实际创建的数量。所以从某种意义上说,你不必担心这一点。只是不要硬编码num_reducers值。它会在运行时相应地选择。
此外,您可以通过命令行传递值(即。-D mapred.reduce.tasks)来控制在运行时产生的减少量。
谢谢TejasP。你在某种程度上是正确的。但是我在我的实现中使用了Partitioner,因此确保Reducer的数量至少等于可能分区的总数是非常重要的。 而这就解释了这个问题背后的动机。 – 2012-03-04 21:22:38
这是不正确的...如果您不指定,Hadoop默认为单个(IdentityReducer)缩减器。如果将它设置为高于群集容量的#,它将“节流”,但它不会根据您的工作任意选择合适的减速器数量(与映射器一样)。 – rICh 2013-05-07 18:23:48
但是,它属于已在0.20.203中弃用的mapred。我确实在mapreduce中检查过,但没有运气。那么,你能否提出一个替代方案? – 2012-03-04 04:45:38
@PiyushKansal:谢谢。我从笔记中抓取了最初的信息;不是更新的。 – Nija 2012-03-04 08:39:27
ClusterStatus是您在新API中查找的内容。 – 2012-03-04 14:34:31