为什么map任务总是在单个节点上运行

时间:2012-08-27 03:33:37

标签: hadoop mapreduce hdfs

我有一个包含4个节点的全分布式Hadoop集群。当我将作业提交给Jobtracker时,决定12个地图任务对我的工作来说很酷,会发生一些奇怪的事情.12个地图任务总是在一个节点上运行而不是在整个集群上运行。在我提出问题之前,我已经完成了以下事情:

  1. 尝试不同的工作
  2. 运行start-balance.sh以重新平衡群集
  3. 但它不起作用,所以我希望有人可以告诉我为什么以及如何解决它。

3 个答案:

答案 0 :(得分:0)

如果输入数据文件的所有块都在该节点中,则调度程序优先考虑同一节点

答案 1 :(得分:0)

显然,源数据文件现在位于一个数据节点中。这可能不是平衡器的错。从我所看到的,您的hdfs必须只有一个复制,或者您不在完全分布式Hadoop集群中。

答案 2 :(得分:0)

检查您的输入是如何分割的。您可能只有一个输入拆分,这意味着只有一个节点将用于处理数据。您可以通过向您的词干添加更多输入文件并将它们放在不同的节点上来测试这一点,然后检查哪些节点正在进行工作。

如果这不起作用,请检查以确保正确配置了群集。具体来说,检查您的名称节点是否具有指向其slaves文件中设置的其他节点的路径,以及每个从属节点是否在其masters文件中设置了您的名称节点。