【问题标题】:shuffle error:exceeded max_failed_unique_matche : bailing out洗牌错误:超过 max_failed_unique_matche :救助
【发布时间】:2012-05-24 00:06:28
【问题描述】:

我是 hadoop 新手,我正在尝试执行 wordcount 示例。我的计算机上有一个由虚拟机组成的 4 个节点的集群。每次作业完成 map 任务但 reduce 任务在大约 16% 时显示此错误:

随机播放错误:超过 MAX_FAILED_UNIQUE_FETCHES;救助。

12/05/24 04:43:12 WARN mapred.JobClient: Error reading task outputmachine3-VirtualBox

看起来从站无法从其他从站检索数据。在某些链接上,我发现它可能是由于 /etc/hosts 文件中的不一致造成的。但是我已经交叉检查了它们,它们都是一致的。谁能帮帮我

【问题讨论】:

  • 你能发布你的reduce任务尝试之一的日志吗

标签: hadoop mapreduce


【解决方案1】:

是否有防火墙阻止公共 hadoop 端口上的集群节点之间的通信(在这种情况下,任务跟踪器为 50060)。通过在端口 50060 上从一个节点到另一个节点的 curl 进行测试,并检查您是否获得了 http 响应代码:

curl -I http://node1:50060/

请务必将上面的“node1”替换为$HADOOP_HOME/conf/slaves 文件中的每个值

编辑所以事实证明这很可能是 DNS 问题,您应该尝试以下方法:

  • 检查 ${HADOOP_HOME}/conf/slaves 文件 - 此处的每个条目都需要位于集群中每个节点的 /etc/hosts 文件中,或者您必须将它们放在网络 DNS 服务器中
  • 一旦您在集群中声明了主机文件ON EVERY NODE(或配置了您的 DNS 服务器),请登录到每个节点并检查您是否可以通过中的名称 ping 其他集群节点奴隶档案。最后断言您可以将 tasktracker(端口 50060)从每个节点卷曲到其他节点(再次使用从文件中的机器名称)
  • 为了安全起见,重启您的 mapreduce 服务

【讨论】:

  • 我通过托管一个仅用于在节点之间进行通信的虚拟主机网络来创建网络。我不认为有任何防火墙
  • 节点监听50060端口
  • 好的,那么在端口 50060 上从一个节点卷曲到另一个节点是否有效?
  • 它返回:curl:couldn't connect to host
  • 并且您尝试连接的节点的 tasktracker 日志是否显示它正在端口 50060 上运行。您可以从一台主机 ping 到另一台主机吗?
【解决方案2】:

通过在终端中键入 $hostname 检查每个节点中的主机名。确保您获得相同的机器名称(主节点中的主节点和从节点中的从节点)。如果没有,请将 /etc/hostname 更改为您的节点名称(主/从)。然后重新启动系统。它会起作用。

SIMPLE Groups

【讨论】:

  • 谢谢!我欠你一杯啤酒;)..我被困了很久......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-03
  • 2023-03-30
  • 1970-01-01
  • 2020-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多