【发布时间】:2011-10-25 20:50:11
【问题描述】:
我有一个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>
【问题讨论】:
-
流式传输和常规 Java MR 作业的调度算法相同。调度任务的位置应该没有任何区别,除非 MR 插槽在 JobTracker 中未标记为空闲。
-
请在这两种情况下描述您输入的内容。诸如:输入文件的数量、文件大小和使用的压缩。
-
@Niels - 输入拆分位置已在原始查询中指定。看起来拆分位置在有/没有流的情况下是相同的。 FIFO 调度逻辑(默认)在有/没有流的情况下是相同的。
-
@Praveen - 我不明白你刚才说什么。我表示白日梦者应该指出他的输入是什么样的。我怀疑他正在针对不同的输入文件运行两个不同的作业,并且他自己的作业针对“小”文件和/或“不可拆分”文件运行。
-
@daydreamer - 为什么添加
mapred.map.tasks可以解决问题?
标签: python hadoop mapreduce hadoop-streaming