1

我正在运行一个hadoop工作mapred.reduce.tasks = 100(只是在试验)。生成的地图数量为 537,因为这取决于输入拆分。问题是并行“运行”的减速器的数量不会超过 4。即使在地图 100% 完成之后。有没有办法增加运行的减速器的数量,因为 CPU 使用率不是最佳的并且减速器非常慢。

我也设置了mapred.tasktracker.reduce.tasks.maximum = 100。但这似乎不会影响并行运行的减速器的数量。

4

3 回答 3

2

检查分区器使用的哈希码;如果你的键只返回 4 个 hashcode 值,Hadoop 将只安排 4 个 reducer。

您可能需要实现自己的分区器以获取更多减速器,但是如果您的映射器仅生成 4 个键,则 4 是减速器的最大数量。

于 2012-11-06T16:26:04.833 回答
0

事实证明,您只需在更改 mapred-site.xml 后重新启动 mapred 和 dfs 守护程序即可。mapred.tasktracker.reduce.tasks.maximum确实是为增加 Reduce 容量而设置的正确参数。

无法理解为什么 hadoop 在mapred-site每次提交作业时都选择不重新加载。

于 2012-11-07T04:59:46.050 回答
0

您可以使用作业配置指定减速器的数量,如下所示:

job.setNumReduceTasks(6);

此外,当您执行 jar 时,您可以传递如下属性:

-D mapred.reduce.tasks=6

于 2012-11-06T11:57:36.050 回答