首页 > 解决方案 > mapreduce.job.running.reduce.limit 和 mapred.reduce.tasks 有什么区别

问题描述

我们使用的是 Hadoop 2.7.1,我发现以下 2 个参数都在一些现有的 MapReduce 代码中设置,

mapreduce.job.running.reduce.limit=500
mapred.reduce.tasks=50

后者似乎有效,因为最终生成了 50 个 part-* 文件。

有谁知道这两个参数之间的区别,如果人们同时指定这两个参数,实际会发生什么?谢谢你。

标签: hadoopmapreduce

解决方案


来自官方文档:

mapreduce.job.running.reduce.limit

每个作业同时减少任务的最大数量。如果此值为 0 或负数,则没有限制。

如果人们同时指定它们,实际上会发生什么?

在您的示例中将无效。但是,如果您将限制设置为 50 并将任务设置为 500,则 hadoop 将不会一次运行所有 500 个减速器,即使您的集群容量足够了。


推荐阅读