我有一个hadoop cluster of three machines
,其中一台机器充当主机和从机。
当我运行wordcount-example时,它会在两台计算机上运行地图任务 - 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>
答案 0 :(得分:1)
您的投入有多大? Hadoop将作业拆分为输入拆分,如果文件太小,它只会有一个拆分。
尝试更大的文件 - 大小约1GB,看看你是如何获得的。
您还可以检查以确保每个TaskTracker都正确报告JobTracker。如果没有正确连接的TaskTracker,它将无法获得任务:
$ hadoop job -list-active-trackers
此命令应输出所有3个主机。