Hadoop JobClient:读取任务输出时出错

Hadoop JobClient:读取任务输出时出错,hadoop,hdfs,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

我正试图在我的集群上处理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程序时,它运行得很好,我得到了所有想要的结果。基于这一点,我想可能是内存问题。我清除了所有用户日志(如类似文件中指定的),然后重试。没用。 我将复制拒绝为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上运行

感谢您的帮助

编辑

作业跟踪器日志:


TaskTracker日志:

获取失败通常是由于DNS问题造成的。检查每个datanode,确保其配置的主机名和ip地址与该主机名的DNS解析匹配

您可以通过访问集群中的每个节点,运行
hostname
ifconfig
并记录返回的主机名和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 namenode.foo.com
nslookup datanode2.foo.com
nslookup datanode3.foo.com
然后,重新访问每个节点并
nslookup
从其他节点返回的所有主机名。验证返回的ip地址是否与从
ifconfig
中找到的ip地址匹配。例如,在datanode1.foo.com上,您应该执行以下操作:

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 namenode.foo.com
nslookup datanode2.foo.com
nslookup datanode3.foo.com
你应该回去:

10.1.1.100     10.1.1.2 10.1.1.3


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

我遇到了类似的问题,并且能够找到解决方案。问题在于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一切都很好

希望这有帮助

最好的


Enrique

我在8节点集群上遇到了与Hadoop 1.2.1完全相同的问题。问题出在/etc/hosts文件中。我删除了所有包含“127.0.0.1 localhost”的条目。您应该将IP地址映射到主机名,而不是“127.0.0.1 localhost”(例如,“10.15.3.35 myhost”)。请注意,对于集群中的所有节点,都应该这样做。因此,在双节点集群中,主机的/etc/hosts应该包含“10.15.3.36 masters\u hostname”,而从机的/etc/hosts应该包含“10.15.3.37 slave1\u hostname”。在这些更改之后,最好重新启动集群。
也可以在这里查看一些基本的Hadoop疑难解答:

您能给我们看一下完整的日志吗?@Tariq这是完整的日志。地图后50%;减少0%信息,以上两行使用不同的任务ID重复。没有出现失败消息,执行没有终止。我指的是jobTracker和TaskTracker日志。你能详细说明一下如何检查DNS解析吗。它可能看起来很琐碎,但这对我来说是全新的。我做了nslookup masternode,获取服务器:127.0.0.1,地址:127.0.0.1#53非授权答案:Name:masternode,地址:192.168.1.1。但是我的IP地址是192.168.1.12。而且错误保持不变。我现在该怎么办?