【问题标题】:Hadoop JobClient: Error Reading task outputHadoop JobClient:读取任务输出时出错
【发布时间】:2014-03-24 19:10:17
【问题描述】:

我正在尝试在我的集群上处理 40GB 的 Wikipedia 英文文章。问题是以下重复的错误消息:

13/04/27 17:11:52 INFO mapred.JobClient: Task Id : attempt_201304271659_0003_m_000046_0, Status : FAILED
Too many fetch-failures
13/04/27 17:11:52 WARN mapred.JobClient: Error reading task outputhttp://ubuntu:50060/tasklog?plaintext=true&attemptid=attempt_201304271659_0003_m_000046_0&filter=stdout

当我在维基百科文章的一小部分而不是完整集上运行相同的 MapReduce 程序时,它工作得很好,我得到了所有想要的结果。基于此,我认为可能是内存问题。我清除了所有用户日志(在类似的post 中指定)并再次尝试。无用。 我将复制拒绝为 1 并添加了更多节点。还是没用。

集群汇总如下:

  • 配置容量: 205.76 GB
  • 使用的 DFS: 40.39 GB
  • 使用的非 DFS: 44.66 GB
  • 剩余 DFS: 120.7 GB
  • 使用的 DFS 百分比: 19.63%
  • DFS 剩余百分比: 58.66%
  • 活动节点: 12
  • 死节点: 0
  • 退役节点: 0
  • 复制不足的块数: 0

每个节点都在 Ubuntu 12.04 LTS

上运行

感谢任何帮助。

编辑

JobTracker 日志:http://txtup.co/gtBaY

TaskTracker 日志:http://txtup.co/wEZ5l

【问题讨论】:

  • 你能给我们看完整的日志吗?
  • @Tariq 这完整的日志。地图后50%;减少 0% INFO,以上两行以不同的 Task_id 不断重复。没有失败信息出现,执行没有终止。
  • 我的意思是 jobTracker 和 TaskTracker 日志..

标签: hadoop hdfs


【解决方案1】:

获取失败通常是由于 DNS 问题。检查每个数据节点以确保它配置的主机名和 ip 地址与匹配的 DNS 解析为该主机名。

您可以通过访问集群中的每个节点并运行 hostnameifconfig 并记下返回的主机名和 IP 地址来执行此操作。例如,这会返回以下内容:

namenode.foo.com 10.1.1.100
datanode1.foo.com 10.1.1.1
datanode2.foo.com 10.1.1.2
datanode3.foo.com 10.1.1.3

然后,重新访问每个节点和nslookup 从其他节点返回的所有主机名。验证返回的 IP 地址是否与从 ifconfig 中找到的 IP 地址匹配。例如,在 datanode1.foo.com 上时,您应该执行以下操作:

nslookup namenode.foo.com
nslookup datanode2.foo.com
nslookup datanode3.foo.com

你应该回来:

   10.1.1.100 10.1.1.2 10.1.1.3

当您在数据子集上运行作业时,您可能没有足够的拆分来在配置错误的数据节点上启动任务。

【讨论】:

  • 您能否详细说明如何检查 DNS 解析。这可能看起来微不足道,但这对我来说是全新的。
  • 我做了 nslookup 主节点,并得到服务器:127.0.0.1,地址:127.0.0.1#53 非权威答案:名称:主节点,地址:192.168.1.1。但我的 IP 地址是 192.168.1.12。而且错误仍然相同。我现在该怎么办?
【解决方案2】:

我遇到了类似的问题,并且能够找到解决方案。问题在于 hadoop 如何处理较小的文件。就我而言,我有大约 150 个文本文件,总大小为 10MB。由于文件被“划分”为块的方式,系统很快就会耗尽内存。因此,要解决这个问题,您必须“填充”块并排列新文件,以便它们很好地分布在块中。 Hadoop 允许您“归档”小文件,以便将它们正确分配到块中。

hadoop archive -archiveName files.har -p /user/hadoop/data /user/hadoop/archive

在这种情况下,我从 /user/hadoop/data 文件夹创建了一个名为 files.har 的存档,并将其存储到文件夹 /user/hadoop/archive 中。完成此操作后,我使用 start-balancer.sh 重新平衡集群分配。

现在,当我再次对 files.har 运行 wordcount 示例时,一切正常。

希望这会有所帮助。

最好的,

恩里克

【讨论】:

    【解决方案3】:

    我在 8 节点集群上使用 Hadoop 1.2.1 时遇到了完全相同的问题。问题出在 /etc/hosts 文件中。我删除了所有包含“127.0.0.1 localhost”的条目。而不是“127.0.0.1 localhost”,您应该将您的 IP 地址映射到您的主机名(例如“10.15.3.35 myhost”)。请注意,您应该为集群中的所有节点这样做。因此,在一个双节点集群中,master 的 /etc/hosts 应该包含“10.15.3.36 masters_hostname”,slave 的 /etc/hosts 应该包含“10.15.3.37 slave1_hostname”。完成这些更改后,最好重新启动集群。 也可以在这里查看一些基本的 Hadoop 故障排除:Hadoop Troubleshooting

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多