Hadoop JobClient:错误读取任务输出

时间:2013-04-27 12:11:01

标签: hadoop hdfs

我试图在我的群集上处理40GB的维基百科英文文章。问题是以下重复错误消息:

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
  • Decomissioned Nodes: 0
  • 欠复制块的数量: 0

每个节点都在 Ubuntu 12.04 LTS

上运行

感谢任何帮助。

修改

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

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

3 个答案:

答案 0 :(得分:1)

获取失败通常是由DNS问题引起的。检查每个datanode以确保它配置的主机名和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

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

答案 1 :(得分:0)

我遇到了类似的问题,并且能够找到解决方案。问题在于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重新平衡群集分配。

现在当我再次运行wordcount示例时,files.har一切都运行良好。

希望这有帮助。

最佳,

恩里克

答案 2 :(得分:0)

我在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 / etc / hosts应该包含" 10.15.3.36 masters_hostname"奴隶的/ etc / hosts应包含" 10.15.3.37 slave1_hostname"。完成这些更改后,最好重新启动群集。 另请查看一些基本的Hadoop故障排除:Hadoop Troubleshooting

相关问题