【问题标题】:Error on starting HDFS daemons on hadoop Multinode cluster在 hadoop 多节点集群上启动 HDFS 守护程序时出错
【发布时间】:2013-07-24 07:03:48
【问题描述】:

Hadoop 多节点设置时的问题。一旦我在 Master (bin/start-dfs.sh) 上启动我的 hdfs 恶魔

我确实在Master上得到了以下日志

starting namenode, logging to /home/hduser/hadoop/libexec/../logs/hadoop-hduser-namenode-localhost.localdomain.out
slave: Warning: $HADOOP_HOME is deprecated.
slave:
slave: starting datanode, logging to /home/hduser/hadoop/libexec/../logs/hadoop-hduser-datanode-localhost.localdomain.out
master: Warning: $HADOOP_HOME is deprecated.
master:
master: starting datanode, logging to /home/hduser/hadoop/libexec/../logs/hadoop-hduser-datanode-localhost.localdomain.out
master: Warning: $HADOOP_HOME is deprecated.
master:
master: starting secondarynamenode, logging to /home/hduser/hadoop/libexec/../logs/hadoop-hduser-secondarynamenode-localhost.localdomain.out

我确实在slave上得到了以下日志@

hadoop-hduser-datanode-localhost.localdomain.log 文件

可以给我一些建议,设置有什么问题。

2013-07-24 12:10:59,373 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.0.1:54310. Already tried 8 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
2013-07-24 12:11:00,374 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.0.1:54310. Already tried 9 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
2013-07-24 12:11:00,377 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Call to master/192.168.0.1:54310 failed on local exception: java.net.NoRouteToHostException: No route to host
        at org.apache.hadoop.ipc.Client.wrapException(Client.java:1144)
        at org.apache.hadoop.ipc.Client.call(Client.java:1112)

【问题讨论】:

    标签: hadoop hadoop-streaming hadoop-plugins hadoop-partitioning


    【解决方案1】:

    确保您的 NameNode 运行良好。如果它已经在运行,请查看连接是否有任何问题。您的 DataNode 无法与 NameNode 通信。确保您已将机器的 IP 和主机名添加到从站的 /etc/hosts 文件中。尝试 telnet 到 192.168.0.1:54310 看看是否可以连接。

    向我们展示 NN 日志会很有帮助。

    编辑:

    查看 wiki 对此问题的看法: 当网络上的一台机器不知道如何将 TCP 数据包发送到指定的机器时,您会收到 TCP No Route To Host 错误 - 通常包含在 Java IOException 中。

    一些可能的原因(非排他性列表):

    • 配置文件中远程机器的主机名错误。
    • 客户端的主机表 //etc/hosts 的目标主机 IPAddress 无效。
    • DNS 服务器的主机表中的目标主机 IP 地址无效。
    • 客户端的路由表(在 Linux 中为 iptables)错误。
    • DHCP 服务器正在发布错误的路由信息​​。
    • 客户端和服务器位于不同的子网上,并且未设置为相互通信。这可能是个意外,也可能是故意锁定 Hadoop 集群。
    • 机器正在尝试使用 IPv6 进行通信。 Hadoop 目前不支持 IPv6
    • 主机的 IP 地址已更改,但长期存在的 JVM 正在缓存旧值。这是 JVM 的一个已知问题(搜索“java 负 DNS 缓存”以获取详细信息和解决方案)。

    快速解决方案:重启 JVM。

    这些都是网络配置/路由器问题。因为它是您的网络,只有您才能发现并追踪问题。

    【讨论】:

    • 我在 Master 和 Fund [root@localhost conf]# jps 3359 DataNode 3744 Jps 3242 NameNode 3500 SecondaryNameNode 上执行了 JPS 命令,它们已启动,但从属设备上没有运行服务 [hduser@localhost logs]$ jps 4384 Jps
    • 看起来像一些与网络相关的问题。你能 ssh 吗?确保机器连接正确。此外,请确保所有守护程序都在所有机器上运行。
    • 你能从slave到master吗?
    • 没有。理想情况下,如果您配置了 ssh,start-dfs.sh 将启动所有机器上的所有进程。请查看编辑后的答案。
    • 哦..尝试挖掘..通过网络搜索..如果您仍然遇到问题,请发布问题:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多