2

这是来自 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)服务初始化失败到 /12 .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) 在 org.apache.hadoop.hdfs .server.blockmanagement.DatanodeManager.registerDatanode(DatanodeManager.java:648) 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.registerDatanode(FSNamesystem.java:3498)

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

4

3 回答 3

9

我也看到过一次,namenode服务器需要做一个反向查找请求,所以一个nslookup 192.168.2.41应该返回一个名字,它没有所以0.0.0.0也被记录了

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

于 2013-11-21T22:47:25.333 回答
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 的数据节点在 dfs.hosts.exclude 定义的文件中列出,或者使用了 dfs.hosts 并且该数据节点未在该文件中列出,则可能会出现此错误。确保数据节点未列在排除项中,如果您使用的是 dfs.hosts,请将其添加到包含项中。之后重新启动hadoop并运行hadoopdfsadmin -refreshNodes.

高温高压

于 2013-06-13T10:04:25.523 回答
0

当数据节点尝试向名称节点注册时,需要反向 DNS 查找。我在 Hadoop 2.6.0 中遇到了同样的异常,因为我的 DNS 不允许反向查找。

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

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

于 2015-04-13T04:57:52.420 回答