2011-09-19 64 views
5

我试图设置要在hadoop 0.20环境中运行的地图任务的数量。如何在hadoop 0.20中设置地图任务的数量?

我正在使用旧的api。

这里是我到目前为止所尝试的选项:

conf.set("mapred.tasktracker.map.tasks.maximum", "5"); 
    conf.set("mapred.map.tasks", "10"); 
    conf.set("mapred.map.tasksperslot", "5"); 
    conf.set("mapred.tasktracker.map", "5"); 
    conf.set("mapred.map.parallel.copies", "5"); 

与所有这些对,平行的运行图任务的数量仍然2.

什么是正确的选项设置为获得并行运行的mappers最多5个?

回答

9

TaskTracker.java

maxCurrentMapTasks = conf.getInt( “mapred.tasktracker.map.tasks.maximum”,2);

根据"Hadoop : The Definitive Guide"。所以,在客户端设置属性是没有用的。您需要在配置文件中设置相同的值。

请注意,某些属性在客户端配置中设置时不起作用。对于 示例,如果在作业提交中将mapred.tasktracker.map.tasks.maximum设置为 ,那么期望它会更改执行作业的任务管理器的任务槽的数量,那么您会感到失望,因为只有此属性如果在tasktracker的mapred-site.html文件中设置,则只能使用 。一般来说,你可以告诉组件 属性应该在哪里设置它的名字,所以mapred.task.tracker.map.tasks.maximum以mapred.tasktracker开始的事实给你一个线索,它可以只设置 为tasktracker守护进程。然而,这不是一条硬性规定,因此在 中有些情况下,您可能需要借助试错法,甚至是阅读源代码。

+0

你能为EMR提供一个合适的配置脚本吗? –

+0

EMR的配置脚本是什么意思?需要更多细节。 –

+1

启动Elastic Mapreduce作业时,可能会在hadoop启动之前运行引导操作。我相信这可以用来设置mappers的数量,但我泄漏了这些知识 –

0

为了让答案上最新与Hadoop中API的变化,我所列举的新替代过时的属性。

mapred.tasktracker.map.tasks.maximum => mapreduce.tasktracker.map.tasks.maximum 
mapred.map.tasks => mapreduce.job.maps 

看一看这个link为过时的API &新的API

但我宁愿保持地图的任务决定的数量框架本身对工作的更好的性能。

相关问题