我正在运行一个hadoop工作mapred.reduce.tasks = 100
(只是在试验)。生成的地图数量为 537,因为这取决于输入拆分。问题是并行“运行”的减速器的数量不会超过 4。即使在地图 100% 完成之后。有没有办法增加运行的减速器的数量,因为 CPU 使用率不是最佳的并且减速器非常慢。
我也设置了mapred.tasktracker.reduce.tasks.maximum = 100
。但这似乎不会影响并行运行的减速器的数量。
我正在运行一个hadoop工作mapred.reduce.tasks = 100
(只是在试验)。生成的地图数量为 537,因为这取决于输入拆分。问题是并行“运行”的减速器的数量不会超过 4。即使在地图 100% 完成之后。有没有办法增加运行的减速器的数量,因为 CPU 使用率不是最佳的并且减速器非常慢。
我也设置了mapred.tasktracker.reduce.tasks.maximum = 100
。但这似乎不会影响并行运行的减速器的数量。
检查分区器使用的哈希码;如果你的键只返回 4 个 hashcode 值,Hadoop 将只安排 4 个 reducer。
您可能需要实现自己的分区器以获取更多减速器,但是如果您的映射器仅生成 4 个键,则 4 是减速器的最大数量。
事实证明,您只需在更改 mapred-site.xml 后重新启动 mapred 和 dfs 守护程序即可。mapred.tasktracker.reduce.tasks.maximum
确实是为增加 Reduce 容量而设置的正确参数。
无法理解为什么 hadoop 在mapred-site
每次提交作业时都选择不重新加载。
您可以使用作业配置指定减速器的数量,如下所示:
job.setNumReduceTasks(6);
此外,当您执行 jar 时,您可以传递如下属性:
-D mapred.reduce.tasks=6