Hadoop集群:map任务只在一台机器上运行而非全部
我有一个由三台机器组成的 hadoop集群
,其中一台机器同时担任主控和从属角色。
当我运行 单词计数示例 时,它会在两台机器上执行映射任务——worker1
和 worker2
。 但是 当我运行自己的代码时,它只在一台机器上执行——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个主机的信息。