【问题标题】:cdh4.3,Exception from the logs ,after ./start-dfs.sh ,datanode and namenode start failcdh4.3,日志异常,./start-dfs.sh后,datanode和namenode启动失败
【发布时间】:2013-06-13 08:42:18
【问题描述】:

这是来自 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) 在 org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager.registerDatanode(DatanodeManager.java:648) 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.registerDatanode(FSNamesystem.java:3498)

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

【问题讨论】:

    标签: hadoop hdfs


    【解决方案1】:

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

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

    【讨论】:

    • 不明白为什么这被否决了。它修复了我正在设置的测试 hadoop 集群的问题。谢谢@osscalvin。 (日志错误消息没有表明namenode正在尝试执行反向dns)
    【解决方案2】:

    似乎存在名称解析问题。

    Datanode 拒绝与 namenode 通信: 数据节点注册(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 并运行 hadoop dfsadmin -refreshNodes.

    HTH

    【讨论】:

    • 您知道导致此问题的任何其他原因吗?我在运行 hadoop-2.0.4-alpha 时遇到了同样的问题,但没有使用 dfs.hosts 或 dfs.hosts.exclude 文件。
    • 您是否将主机名和 IP 添加到 /etc/hosts 文件中?
    • 将 datanode 主机名添加到 namenode 的 /etc/hosts 文件中为我解决了这个问题。为了将来参考,这是我用来自动添加从属主机名的 shell 命令:cat slaves | xargs -n1 -I {} bash -c "echo `nslookup {} | grep Add | grep -v '#' | cut -f 2 -d ' '` {}" | sudo tee -a /etc/hosts
    • 嗨,@Tariq,我正在运行 Hadoop-2.1.0-beta,发生了这个错误。但是我在机器上没有 root 访问权限, /etc/hosts 不允许我编辑。这些机器可以相互“ping”和“ssh”。我可以有一些其他的解决方案吗?谢谢。
    • @Tariq 谢谢,这是我的数据节点的完整日志:gist.github.com/zfz/6373502
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      • 2013-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-16
      • 2015-03-26
      相关资源
      最近更新 更多