0

我想根据每个作业更改集群的减少插槽容量。也就是说,原来我为一个tasktracker配置了8个reduce slot,所以对于一个有100个reduce任务的job,会同时运行(8 * datanode number)个reduce任务。但是对于一项特定的工作,我想将这个数字减少到一半,所以我做了:

conf.set("mapred.tasktracker.reduce.tasks.maximum", "4");
...
Job job = new Job(conf, ...)

在 Web UI 中,我可以看到对于这项工作,最大减少任务正好是 4,就像我设置的那样。然而,hadoop 仍然为这个工作的每个数据节点启动 8 个 reducer ......看来我不能像这样改变 reduce 容量。

我在 Hadoop 邮件列表上询问,有人建议我可以使用容量调度程序来实现,我该怎么做?

我正在使用 hadoop 1.0.2。

谢谢。

4

1 回答 1

1

容量调度程序允许您为 MapReduce 作业指定资源限制。基本上,您必须定义队列,您的工作被安排到这些队列中。每个队列可以有不同的配置。

就您的问题而言,在使用容量调度程序时,可以指定每个任务的 RAM 限制,以限制给定任务占用的插槽数。根据文档,目前仅 Linux 平台支持基于内存的调度。

有关此主题的更多信息,请参阅:http ://wiki.apache.org/hadoop/LimitingTaskSlotUsage和http://hadoop.apache.org/docs/stable/capacity_scheduler.html

于 2013-05-02T13:38:19.990 回答