以下是来自hadoop datanode的日志-…日志:
致命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.disallowedatanodeexception):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)位于org.apache.hadoop.hdfs.server.blockmanagement.datanodemanager.registerdatanode(datanodemanager。java:648)在org.apache.hadoop.hdfs.server.namenode.fsnamesystem.registerdatanode(fsnamesystem。java:3498)
我的mistake:namenode can 启动,datanode无法启动
3条答案
按热度按时间nvbavucw1#
当datanode尝试向namenode注册时,需要反向dns查找。hadoop2.6.0也有同样的异常,因为我的dns不允许反向查找。
但是您可以通过在hdfs-site.xml中将此配置“dfs.namenode.datanode.registration.ip hostname check”设置为false来禁用hadoop的反向查找
我从这里得到了这个解决方案,它解决了我的问题。
yqlxgs2m2#
我也看到过一次,namenode服务器需要执行反向查找请求,因此nslookup 192.168.2.41应该返回一个名称,但没有,因此0.0.0.0也被记录
如果dns工作正常(即in-addr.arpa文件与域文件中的条目匹配),则不需要将地址硬编码到/etc/hosts中,但如果没有dns,则需要帮助hadoop。
7xllpg7q3#
似乎有一个名称解析问题。
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未在该文件中列出,则可能会出现此错误。确保datanode未列在excludes中,如果您使用的是dfs.hosts,请将其添加到includes中。然后重新启动hadoop并运行hadoop
dfsadmin -refreshNodes.
hth公司