Hadoop集群:map任务只在一台机器上运行而非全部

2 投票
1 回答
1285 浏览
提问于 2025-04-17 05:00

我有一个由三台机器组成的 hadoop集群,其中一台机器同时担任主控和从属角色。

当我运行 单词计数示例 时,它会在两台机器上执行映射任务——worker1worker2但是 当我运行自己的代码时,它只在一台机器上执行——worker1,我该如何让映射任务在所有机器上运行呢?

Input Split Locations

/default-rack/master
/default-rack/worker1
/default-rack/worker2  

解决了!!!

我在 mapred-site.xml 的配置中添加了以下内容,这样就解决了问题。

<property>
  <name>mapred.map.tasks</name>
  <value>100</value>
</property>

1 个回答

1

你的输入数据有多大呢?Hadoop会把工作分成小块来处理,如果你的文件太小,它可能只会分成一块。

试试用一个更大的文件,比如说大约1GB的文件,看看这时候会有多少个处理任务。


你还可以检查一下,确保每个任务跟踪器(TaskTracker)都能正常向工作跟踪器(JobTracker)报告。如果有哪个任务跟踪器没有正常连接,它就收不到任务:

   $ hadoop job -list-active-trackers

这个命令应该能显示你所有3个主机的信息。

撰写回答