cdh4.3,日志异常,在./start-dfs.sh,datanode和namenode启动失败后

时间:2013-06-13 08:42:19

标签: hadoop hdfs

这是来自hadoop-datanode -... log:

的日志

FATAL org.apache.hadoop.hdfs.server.datanode.DataNode:块池块池的初始化失败BP-1421227885-192.168.2.14-1371135284949(存储ID DS-30209445-192.168.2.41-50010- 1371109358645)服务到/192.168.2.8:8020 org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.protocol.DisallowedDatanodeException):Datanode拒绝与namenode通信:DatanodeRegistration(0.0.0.0,storageID = DS-30209445-192.168.2.41-50010-1371109358645 ,infoPort = 50075,ipcPort = 50020,storageInfo = lv = -40; cid = CID-f16e4a3e-4776-4893-9f43-b04d8dc651c9; nsid = 1710848135; c = 0)         at org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager.registerDatanode(DatanodeManager.java:648)         在org.apache.hadoop.hdfs.server.namenode.FSNamesystem.registerDatanode(FSNamesystem.java:3498)

我的错误:namenode可以启动,datanode无法启动

3 个答案:

答案 0 :(得分:9)

我也曾经看过这个,namenode服务器需要做一个反向查找请求, 所以一个nslookup 192.168.2.41应该返回一个名字,它不会这样记录0.0.0.0

如果你的dns正常工作(即in-addr.arpa文件与域文件中的条目匹配),你不需要将地址硬编码到/ etc / hosts中但是如果你没有dns那么你需要帮助hadoop。

答案 1 :(得分:1)

似乎存在名称解析问题。

  

Datanode拒绝与namenode通信:   DatanodeRegistration(0.0.0.0,   storageID = DS-30209445-192.168.2.41-50010-1371109358645,   infoPort = 50075,ipcPort = 50020,

此处DataNode将自己标识为0.0.0.0

看起来像dfs.hosts强制执行。你能否在你的NameNode的hdfs-site.xml配置中重新检查你肯定没有使用dfs.hosts文件?

如果尝试连接到namenode的datanode列在dfs.hosts.exclude定义的文件中,或者使用了dfs.hosts且该文件中未列出datanode,则可能会出现此错误。确保datludeode未在排除中列出,如果您使用的是dfs.hosts,请将其添加到includes。之后重新启动hadoop并运行hadoop dfsadmin -refreshNodes.

HTH

答案 2 :(得分:0)

当datanode尝试使用namenode注册时,需要反向DNS查找。我在Hadoop 2.6.0中得到了相同的例外,因为我的DNS不允许反向查找。

但您可以通过在hdfs-site.xml中将此配置“dfs.namenode.datanode.registration.ip-hostname-check”设置为false来禁用Hadoop的反向查找

我从here得到了这个解决方案,它解决了我的问题。

相关问题