Hadoop数据节点停止报告

时间:2012-01-23 15:02:11

标签: hadoop

我有一个运行hadoop 0.20.203.0的4节点(master + 3 slave)集群。每隔几天,数据节点就会在主节点上报告为死机。在奴隶上,一切看起来都很好,并且datanode进程仍在运行,日志中没有任何可疑,尽管它不再接收任何请求。在主服务器上,日志显示datanode心跳已丢失。

唯一的解决方案是手动停止datanode然后再次启动它。几分钟后,datanode再次报告为实时。

还有其他人经历过这个吗?如果是这样,原因和解决方案是什么?

3 个答案:

答案 0 :(得分:3)

我们有类似的问题,因为我们解决了增加打开文件限制的问题。

尝试将ulimit -n 4096之类的行添加到文件hadoop-env.sh

答案 1 :(得分:2)

有两个问题。

1)上面Tomas建议的根本问题是打开文件限制设置不正确。

2)第二个问题是错误处理和报告。这在hadoop bug数据库Datanode is marked dead, but datanode process is alive and verifying blocks中有描述。

当发送心跳到namenode的线程失败时,它无法很好地恢复。

a)不再进行心跳尝试,并且不会导致整个数据节点关闭。 b)它向stderr或stdout报告了错误,它通常进入.out文件而不是通过log4j,这对通常的.log文件有效(我忘了.out文件甚至存在,所以我没有检查那里。)

答案 2 :(得分:0)

在我们的例子中,它发生在OutOfMemoryError之后。我们在数据节点.out文件中找到了错误。