我正在使用hadoop 2.0。当我使用 job.setNumMapTasks 更改地图任务的数量时,数字是预期的(在输出文件夹中的序列文件数和容器数),但它们不是并行运行的,但一次只有2个。例如,当我将map任务的数量设置为5时,首先执行其中2个,然后再执行2个,然后执行1.我有一个8核系统,并希望充分利用它。一些在线狩猎(包括StackOverflow)似乎提出了一些建议,我尝试了以下内容:
尽管如此,我认为没有任何性能变化。它一次仍然有2个地图任务。我没有格式化我的hdfs并在3之后重新加载序列文件。不确定这是否是原因。
您可以在https://www.dropbox.com/sh/jnxsm5m2ic1evn4/zPVcdk8GTp访问我的配置文件。我在这里错过了什么吗?
另外,我有另一个问题。有些帖子似乎提到job.setNumMapTasks只是环境的指标,实际数量由环境决定。但是,我总是发现任务的数量与我指定的一样。这是预期的吗?
谢谢和问候, 萨穆德拉
答案 0 :(得分:1)
在经典的mapreduce框架(MR1)中,您可以使用属性mapred.tasktracker.map.tasks.maximum
设置地图位置的数量。但在YARN中,情况有所不同。请参阅以下关于YARN中的map / reduce插槽的讨论
https://groups.google.com/a/cloudera.org/forum/#!topic/cdh-user/J564g9A8tPE