我有一个hadoop cluster of three machines
,其中一台机器同时充当主机器和从机器。
当我运行wordcount-example时,它在两台机器(worker1
和worker2
)上运行map任务。但是当我运行自己的代码时,它只在一台机器上运行- 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>
你的输入有多大?Hadoop将作业分割成输入分割,如果你的文件太小,它将只有一个分割。
尝试一个更大的文件——比如大约1GB的大小,看看你得到了什么样的映射器。
你也可以检查确保每个TaskTracker都正确地报告给JobTracker。如果有一个未正确连接的TaskTracker,它将无法获得任务:
$ hadoop job -list-active-trackers
该命令应该输出所有3个主机。