4

我正在尝试在我的集群上处理 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 程序时,它工作得很好,我得到了所有想要的结果。基于此,我认为可能是内存问题。我清除了所有用户日志(如在类似帖子中指定)并再次尝试。无用。我将复制拒绝为 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

4

3 回答 3

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 地址是否与从 中找到的 IP 地址匹配ifconfig。例如,在 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

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

于 2013-04-27T21:35:56.800 回答
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 重新平衡集群分配。

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

希望这可以帮助。

最好的,

恩里克

于 2014-03-15T23:02:41.403 回答
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/hosts 应该包含“10.15.3.36 masters_hostname”,slave 的 /etc/hosts 应该包含“10.15.3.37 slave1_hostname”。完成这些更改后,最好重新启动集群。还可以在这里查看一些基本的 Hadoop 故障排除:Hadoop 故障排除

于 2014-03-24T11:05:06.593 回答