【问题标题】:why map task always running on a single node为什么 map 任务总是在单个节点上运行
【发布时间】:2012-08-27 03:33:37
【问题描述】:

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

  1. 尝试不同的工作
  2. 运行 start-balance.sh 重新平衡集群

但它不起作用,所以我希望有人能告诉我为什么以及如何解决它。

【问题讨论】:

  • 您是说您的作业有 12 个映射任务(输入拆分),还是系统配置为一次最多运行 12 个任务?
  • 你能从你的 conf 文件夹中发布你的 hdfs-site.xml 吗?谢谢。

标签: hadoop mapreduce hdfs


【解决方案1】:

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

【讨论】:

  • 所有输入数据块不只在一个节点中。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 2020-02-17
      • 1970-01-01
      相关资源
      最近更新 更多