RHEL 5下配置Hadoop集群:java.net.NoRouteToHostException: No route to host问题的解决

本文记录了一次从Ubuntu到RHEL5的Hadoop集群迁移过程,详细描述了Datanode无法连接到Namenode的问题及排查解决步骤,最终发现是由于防火墙导致的连接失败。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近,要把原来基于Ubuntu下配置的Hadoop集群迁移到RHEL 5下,结果在启动的时候,出现了莫名其妙的问题:

Namenode进程启动起来了,但是在登录到Datanode上启动集群slaves的时候,出现了Datanode无法连接到Namenode的问题,根据Datanode日志,可以很容易地定位到问题,肯定是在集群启动之初,Datanode向Namenode注册的时候失败了,在Datanode端查看异常信息,如下所示:

[shirdrn@slave-01 ~]$ tail -500f hadoop/storage/logs/hadoop-shirdrn-datanode-slave-01.log 
2012-02-20 23:54:02,011 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: STARTUP_MSG: 
/************************************************************
STARTUP_MSG: Starting DataNode
STARTUP_MSG:   host = slave-01/192.168.0.181
STARTUP_MSG:   args = []
STARTUP_MSG:   version = 0.22.0
STARTUP_MSG:   classpath = /home/shirdrn/hadoop/hadoop-0.22.0/bin/../conf:/home/shirdrn/installation/jdk1.6.0_30/lib/tools.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/..:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-common-0.22.0.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-common-test-0.22.0.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-hdfs-0.22.0.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-hdfs-0.22.0-sources.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-hdfs-ant-0.22.0.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-hdfs-test-0.22.0.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-hdfs-test-0.22.0-sources.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-mapred-0.22.0.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-mapred-0.22.0-sources.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-mapred-examples-0.22.0.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-mapred-test-0.22.0.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-mapred-tools-0.22.0.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/ant-1.6.5.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/ant-1.7.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/ant-launcher-1.7.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/asm-3.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/aspectjrt-1.6.5.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/aspectjtools-1.6.5.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/avro-1.5.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/avro-compiler-1.5.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/avro-ipc-1.5.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-cli-1.2.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-codec-1.4.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-collections-3.2.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-daemon-1.0.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-el-1.0.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-httpclient-3.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-lang-2.5.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-logging-1.1.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-logging-api-1.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-net-1.4.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/core-3.1.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/ecj-3.5.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/guava-r09.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/hsqldb-1.8.0.10.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jackson-core-asl-1.7.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jackson-mapper-asl-1.7.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jasper-compiler-5.5.12.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jasper-runtime-5.5.12.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jdiff-1.0.9.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jets3t-0.7.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jetty-6.1.26.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jetty-util-6.1.26.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jsch-0.1.42.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jsp-2.1-glassfish-2.1.v20091210.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jsp-2.1-jetty-6.1.26.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jsp-api-2.1-glassfish-2.1.v20091210.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/junit-4.8.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/kfs-0.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/log4j-1.2.16.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/mockito-all-1.8.2.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/mockito-all-1.8.5.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/oro-2.0.8.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/paranamer-2.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/paranamer-ant-2.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/paranamer-generator-2.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/qdox-1.12.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/servlet-api-2.5-20081211.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/slf4j-api-1.6.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/slf4j-log4j12-1.6.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/snappy-java-1.0.3.2.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/velocity-1.6.4.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/xmlenc-0.52.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jsp-2.1/*.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/..:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../conf:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-hdfs-0.22.0.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-hdfs-0.22.0-sources.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-hdfs-ant-0.22.0.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-hdfs-test-0.22.0.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-hdfs-test-0.22.0-sources.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/ant-1.6.5.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/ant-1.7.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/ant-launcher-1.7.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/asm-3.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/aspectjrt-1.6.5.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/aspectjtools-1.6.5.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/avro-1.5.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/avro-compiler-1.5.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/avro-ipc-1.5.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-cli-1.2.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-codec-1.4.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-collections-3.2.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-daemon-1.0.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-el-1.0.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-httpclient-3.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-lang-2.5.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-logging-1.1.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-logging-api-1.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-net-1.4.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/core-3.1.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/ecj-3.5.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/guava-r09.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/hsqldb-1.8.0.10.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jackson-core-asl-1.7.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jackson-mapper-asl-1.7.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jasper-compiler-5.5.12.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jasper-runtime-5.5.12.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jdiff-1.0.9.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jets3t-0.7.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jetty-6.1.26.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jetty-util-6.1.26.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jsch-0.1.42.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jsp-2.1-glassfish-2.1.v20091210.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jsp-2.1-jetty-6.1.26.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jsp-api-2.1-glassfish-2.1.v20091210.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/junit-4.8.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/kfs-0.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/log4j-1.2.16.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/mockito-all-1.8.2.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/mockito-all-1.8.5.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/oro-2.0.8.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/paranamer-2.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/paranamer-ant-2.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/paranamer-generator-2.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/qdox-1.12.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/servlet-api-2.5-20081211.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/slf4j-api-1.6.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/slf4j-log4j12-1.6.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/snappy-java-1.0.3.2.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/velocity-1.6.4.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/xmlenc-0.52.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/..:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-hdfs-0.22.0.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-hdfs-0.22.0-sources.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-hdfs-ant-0.22.0.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-hdfs-test-0.22.0.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../hadoop-hdfs-test-0.22.0-sources.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/ant-1.6.5.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/ant-1.7.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/ant-launcher-1.7.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/asm-3.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/aspectjrt-1.6.5.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/aspectjtools-1.6.5.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/avro-1.5.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/avro-compiler-1.5.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/avro-ipc-1.5.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-cli-1.2.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-codec-1.4.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-collections-3.2.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-daemon-1.0.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-el-1.0.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-httpclient-3.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-lang-2.5.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-logging-1.1.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-logging-api-1.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/commons-net-1.4.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/core-3.1.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/ecj-3.5.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/guava-r09.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/hsqldb-1.8.0.10.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jackson-core-asl-1.7.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jackson-mapper-asl-1.7.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jasper-compiler-5.5.12.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jasper-runtime-5.5.12.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jdiff-1.0.9.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jets3t-0.7.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jetty-6.1.26.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jetty-util-6.1.26.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jsch-0.1.42.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jsp-2.1-glassfish-2.1.v20091210.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jsp-2.1-jetty-6.1.26.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/jsp-api-2.1-glassfish-2.1.v20091210.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/junit-4.8.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/kfs-0.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/log4j-1.2.16.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/mockito-all-1.8.2.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/mockito-all-1.8.5.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/oro-2.0.8.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/paranamer-2.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/paranamer-ant-2.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/paranamer-generator-2.3.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/qdox-1.12.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/servlet-api-2.5-20081211.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/slf4j-api-1.6.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/slf4j-log4j12-1.6.1.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/snappy-java-1.0.3.2.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/velocity-1.6.4.jar:/home/shirdrn/hadoop/hadoop-0.22.0/bin/../lib/xmlenc-0.52.jar
STARTUP_MSG:   build = http://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.22/common -r 1207774; compiled by 'jenkins' on Sun Dec  4 00:57:22 UTC 2011
************************************************************/
2012-02-20 23:54:02,416 WARN org.apache.hadoop.hdfs.server.common.Util: Path /home/shirdrn/hadoop/storage/data/a should be specified as a URI in configuration files. Please update hdfs configuration.
2012-02-20 23:54:02,417 WARN org.apache.hadoop.hdfs.server.common.Util: Path /home/shirdrn/hadoop/storage/data/b should be specified as a URI in configuration files. Please update hdfs configuration.
2012-02-20 23:54:02,417 WARN org.apache.hadoop.hdfs.server.common.Util: Path /home/shirdrn/hadoop/storage/data/c should be specified as a URI in configuration files. Please update hdfs configuration.
2012-02-20 23:54:03,128 WARN org.apache.hadoop.util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2012-02-20 23:54:04,373 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.0.180:9000. Already tried 0 time(s).
2012-02-20 23:54:05,376 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.0.180:9000. Already tried 1 time(s).
2012-02-20 23:54:06,379 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.0.180:9000. Already tried 2 time(s).
2012-02-20 23:54:07,382 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.0.180:9000. Already tried 3 time(s).
2012-02-20 23:54:08,384 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.0.180:9000. Already tried 4 time(s).
2012-02-20 23:54:09,385 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.0.180:9000. Already tried 5 time(s).
2012-02-20 23:54:10,387 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.0.180:9000. Already tried 6 time(s).
2012-02-20 23:54:11,389 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.0.180:9000. Already tried 7 time(s).
2012-02-20 23:54:12,426 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.0.180:9000. Already tried 8 time(s).
2012-02-20 23:54:13,432 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.0.180:9000. Already tried 9 time(s).
2012-02-20 23:54:13,445 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Call to master/192.168.0.180:9000 failed on local exception: java.net.NoRouteToHostException: No route to host
        at org.apache.hadoop.ipc.Client.wrapException(Client.java:1063)
        at org.apache.hadoop.ipc.Client.call(Client.java:1031)
        at org.apache.hadoop.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.java:198)
        at $Proxy4.getProtocolVersion(Unknown Source)
        at org.apache.hadoop.ipc.WritableRpcEngine.getProxy(WritableRpcEngine.java:235)
        at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:275)
        at org.apache.hadoop.ipc.RPC.waitForProxy(RPC.java:206)
        at org.apache.hadoop.ipc.RPC.waitForProxy(RPC.java:185)
        at org.apache.hadoop.ipc.RPC.waitForProxy(RPC.java:169)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:262)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1567)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1510)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1533)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1680)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1690)
Caused by: java.net.NoRouteToHostException: No route to host
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567)
        at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
        at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:373)
        at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:416)
        at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:504)
        at org.apache.hadoop.ipc.Client$Connection.access$2000(Client.java:206)
        at org.apache.hadoop.ipc.Client.getConnection(Client.java:1164)
        at org.apache.hadoop.ipc.Client.call(Client.java:1008)
        ... 13 more

2012-02-20 23:54:13,447 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at slave-01/192.168.0.181
************************************************************/
首先确定,Namenode的9000端口是否在监听:

[shirdrn@master ~]$ netstat -nap | grep 9000
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 192.168.0.180:9000          0.0.0.0:*                   LISTEN      5374/java 
可见,Namenode启动没有问题。

在网上查了一下,有人说(http://hi.baidu.com/tdfrank/blog/item/a1b9e1d95e3b013f10df9b01.html)是,hostname和hosts中配置的虚拟域名不一致会导致出现No route to host异常,经过验证:

master结点:

[shirdrn@master ~]$ cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               localhost localhost
#::1            localhost6.localdomain6 localhost6

192.168.0.180   master master
192.168.0.181   slave-01        slave-01
192.168.0.182   slave-02        slave-02
192.168.0.183   slave-03        slave-03
[shirdrn@master ~]$ cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=master
slave-01结点:

[shirdrn@slave-01 ~]$ cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=slave-01
[shirdrn@slave-01 ~]$ cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               localhost localhost
#::1            localhost6.localdomain6 localhost6

192.168.0.180   master  master
192.168.0.181   slave-01        slave-01
192.168.0.182   slave-02        slave-02
192.168.0.183   slave-03        slave-03
另外两个从结点也没有问题,此处略去。

经过对比验证,都没有问题。

其实,我已经想到可能是防火墙的问题,经过查证,终于找到了有人曾经遇到过该问题,可见文章http://samwalt.iteye.com/blog/1099348,需要关闭防火墙,在集群中每台机器上都执行如下命令:

[shirdrn@master ~]$ su root
Password: 
[root@master shirdrn]# service iptables stop
Flushing firewall rules: [  OK  ]
Setting chains to policy ACCEPT: filter [  OK  ]
Unloading iptables modules: [  OK  ]
需要切换到root用户才能执行关闭。

然后,再启动Hadoop集群,就没有问题了。

<think>我们正在解决Hadoop连接异常问题,特别是在生产环境中避免使用开发服务器以及处理`java.net.ConnectException:拒绝连接`的错误。根据引用,错误通常出现在提交任务时,如`CallFromhadoop01/192.168.245.139toloaclhost:54635failed`,这表示Hadoop客户端尝试连接到localhost(即本机)的某个端口被拒绝。###问题分析1.**错误原因**:Hadoop配置中使用了`localhost`或`127.0.0.1`,导致客户端尝试连接本地而不是正确的服务器节点。2.**生产环境问题**:开发服务器配置(如使用localhost)被错误地用于生产环境,导致分布式集群节点间通信失败。3.**核心组件**:`ApplicationClientProtocolPBClientImpl`是YARN客户端协议实现,其连接异常通常源于ResourceManager地址配置错误。###解决方案步骤####1.检查关键配置文件修改以下配置文件中的主机名和端口,确保使用**完全限定域名(FQDN)**或**静态IP**(非localhost):-`core-site.xml`:检查`fs.defaultFS`属性-`yarn-site.xml`:检查`yarn.resourcemanager.hostname`和`yarn.resourcemanager.address`等属性-`mapred-site.xml`:检查`mapreduce.framework.name`和`yarn.app.mapreduce.am.staging-dir`等属性**正确配置示例**:```xml<!--core-site.xml--><property><name>fs.defaultFS</name><value>hdfs://hadoop-master:9000</value><!--使用主机名而非localhost--></property><!--yarn-site.xml--><property><name>yarn.resourcemanager.hostname</name><value>hadoop-master</value><!--指定ResourceManager的主机名--></property>```####2.验证主机名解析在所有集群节点执行:```bash$pinghadoop-master#应返回正确的IP地址$hostname-f#查看本机FQDN,需与配置一致```若使用静态IP,确保所有节点`/etc/hosts`包含映射:```192.168.3.1hadoop-master192.168.3.2hadoop-worker1```####3.防火墙与端口开放生产环境必须开放Hadoop端口(如9000,8088,8032等):```bash#使用firewalld(CentOS/RHEL)$firewall-cmd--permanent--add-port=9000/tcp$firewall-cmd--reload```####4.重启Hadoop集群```bash$stop-dfs.sh&&stop-yarn.sh#停止集群$start-dfs.sh&&start-yarn.sh#启动集群```####5.生产环境部署规范|配置项|开发环境|生产环境要求||-------|---------|-------------||主机名|可使用localhost|必须使用FQDN||端口|默认端口|按安全规划调整||防火墙|常关闭|严格按需开放||高可用|可选|必须配置HA|###连接异常排查流程图```mermaidgraphTDA[出现ConnectException]-->B{检查配置}B-->|core-site.xml/yarn-site.xml|C[确认主机名非localhost]C-->D[验证节点间网络连通性]D-->E[检查防火墙/SELinux]E-->F[重启集群并测试]F-->G[问题解决?]G-->|是|H[完成]G-->|否|I[检查日志]I-->J[查看ResourceManager/YARN日志]J-->K[根据日志修正配置]K-->B```###关键日志位置-**ResourceManager日志**:`$HADOOP_HOME/logs/yarn-*-resourcemanager-*.log`-**客户端错误**:应用程序提交时的控制台输出###生产环境防护措施1.**配置校验脚本**:```bash#!/bin/bash#检查localhost配置项grep-r"localhost"$HADOOP_CONF_DIRif[$?-eq0];thenecho"错误:配置中包含localhost!生产环境禁止使用"exit1fi```2.**自动化部署工具**:-使用Ansible/Puppet管理配置模板,根据环境变量替换主机名。###相关问题1.Hadoop集群如何配置高可用(HA)?[^3]2.如何监控Hadoop集群网络连通性?3.YARN应用程序提交失败的其他常见原因?4.生产环境Hadoop安全加固有哪些措施?5.如何分析Hadoop守护进程日志?6.Hadoop跨版本升级如何避免配置错误?>通过以上步骤可解决90%的Hadoop连接拒绝问题[^1][^2]。生产环境务必使用FQDN并严格管理防火墙[^3]。建议部署前运行配置校验脚本,防止开发配置泄露到生产环境。</think>### Hadoop 连接异常解决方案(生产环境部署) 针对 `java.net.ConnectException: 拒绝连接` 错误,特别是 `ApplicationClientProtocolPBClientImpl getNewApplication` 相关的连接问题,以下是生产环境部署的完整解决方案: #### 核心问题诊断 ```mermaid graph TD A[ConnectException: 拒绝连接] --> B{原因分析} B --> C[网络配置错误] B --> D[服务未启动] B --> E[防火墙/SELinux限制] B --> F[主机名解析失败] B --> G[开发配置污染] ``` #### 生产环境解决方案 1. **关键配置文件修正** - **core-site.xml** (核心配置): ```xml <!-- 生产环境必须使用FQDN或静态IP --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop-prod-master:9000</value> <!-- 避免localhost --> </property> ``` - **yarn-site.xml** (YARN资源配置): ```xml <!-- 指定ResourceManager主机 --> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop-prod-rm</value> <!-- 生产专用主机名 --> </property> <!-- 启用高可用 --> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> ``` 2. **主机名解析加固** - 所有节点 `/etc/hosts` 配置: ``` 192.168.3.10 hadoop-prod-master # NameNode 192.168.3.11 hadoop-prod-rm # ResourceManager 192.168.3.12 hadoop-prod-dn01 # DataNode ``` - 验证命令: ```bash # 所有节点执行 ping hadoop-prod-rm hostname -f ``` 3. **防火墙与SELinux配置** ```bash # 开放Hadoop端口(生产环境最小化开放) firewall-cmd --permanent --add-port=8020/tcp # NameNode RPC firewall-cmd --permanent --add-port=8032/tcp # ResourceManager调度 firewall-cmd --permanent --add-port=8088/tcp # YARN Web UI firewall-cmd --reload # 禁用SELinux或配置策略 setenforce 0 # 临时禁用 sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config ``` 4. **服务状态检查与启动** ```bash # 生产环境启动顺序 hadoop-daemon.sh start namenode yarn-daemon.sh start resourcemanager hadoop-daemons.sh start datanode yarn-daemons.sh start nodemanager # 服务验证 yarn node -list # 检查节点注册 hdfs dfsadmin -report # 检查存储状态 ``` 5. **客户端连接验证** ```java // 生产环境连接测试代码 Configuration conf = new Configuration(); conf.set("yarn.resourcemanager.address", "hadoop-prod-rm:8032"); YarnClient yarnClient = YarnClient.createYarnClient(); yarnClient.init(conf); yarnClient.start(); // 此处抛出ConnectException需排查 ``` #### 生产环境部署规范 | 配置项 | 开发环境 | 生产环境要求 | |---------------|---------------|-------------------------| | 主机名 | localhost | FQDN/静态IP | | 端口 | 默认端口 | 按安全规划调整 | | 防火墙 | 常关闭 | 严格按需开放 | | 高可用(HA) | 可选 | 必须配置 | | 配置管理 | 手动修改 | 自动化部署(Cobbler/Ansible) | #### 错误排查工具包 1. **网络连通性测试**: ```bash telnet hadoop-prod-rm 8032 # 测试ResourceManager端口 nc -zv hadoop-prod-master 9000 ``` 2. **日志分析关键位置**: - ResourceManager 日志:`/var/log/hadoop-yarn/yarn-yarn-resourcemanager-*.log` - 客户端错误日志:`org.apache.hadoop.ipc.Client` 相关异常栈 3. **配置校验脚本**: ```bash #!/bin/bash # 检查localhost配置项 grep -r "localhost" $HADOOP_CONF_DIR if [ $? -eq 0 ]; then echo "错误:生产配置中包含localhost!" exit 1 fi ``` #### 预防开发配置污染 1. **环境隔离方案**: ```bash # 使用独立配置目录 export HADOOP_CONF_DIR=/etc/hadoop-prod # 启动时指定环境 hadoop --config $HADOOP_CONF_DIR jar application.jar ``` 2. **配置差异检查**: ```bash diff -r /etc/hadoop-dev /etc/hadoop-prod | grep -i "localhost\|127.0.0.1" ``` #### 相关问题 1. 如何实现Hadoop集群的零停机升级?[^3] 2. YARN资源调度异常如何排查? 3. Hadoop RPC协议的工作原理是什么? 4. 生产环境如何配置Hadoop Kerberos认证? 5. 如何监控Hadoop集群的网络性能? 6. Hadoop跨数据中心部署的最佳实践? > 通过以上方案可解决95%的ConnectException问题[^1][^2]。生产环境务必避免localhost配置[^3],建议部署前使用配置校验脚本。定期检查防火墙规则和主机名解析是维持集群健康的关键措施。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值