我想在每个作业的基础上更改群集的减少插槽的容量。也就是说, 最初我为任务跟踪器配置了8个减少插槽,因此对于具有100个减少任务的作业,将会有(8 * datanode number)减少同时运行的任务。但是对于一个特定的工作,我想把这个数字减少到一半,所以我做了:
conf.set("mapred.tasktracker.reduce.tasks.maximum", "4");
...
Job job = new Job(conf, ...)
在Web UI中,我可以看到,对于这项工作,max reduce任务正好是4,就像我设置的那样。然而,hadoop仍然为每个数据节点启动8个减速器...这似乎我无法改变这样的减少容量。
我在Hadoop邮件列表上询问过,有人建议我可以使用容量调度程序,我该怎么办?
我正在使用hadoop 1.0.2。
感谢。
答案 0 :(得分:1)
Capacity Scheduler允许您为MapReduce作业指定资源限制。基本上,您必须定义要安排作业的队列。每个队列可以有不同的配置。
就您的问题而言,在使用容量调度程序时,可以指定每任务RAM限制,以限制给定任务占用的槽数。根据{{3}},目前只在Linux平台上支持基于内存的调度。
有关此主题的详细信息,请参阅:documentation和http://wiki.apache.org/hadoop/LimitingTaskSlotUsage。