【原創】hadoop啟動錯誤 找不到路由 解決方法



hadoop啟動過程中遇到下面的問題:


2012-07-04 18:43:20,763 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting DataNode STARTUP_MSG: host = slave1/192.168.18.87 STARTUP_MSG: args = [] STARTUP_MSG: version = 0.20.2 STARTUP_MSG: build = https://svn.apache.org/repos/asf ... ranches/branch-0.20 -r 911707; compiled by 'chrisdo' on Fri Feb 19 08:07:34 UTC 2010 ************************************************************/ 2012-07-04 18:43:22,468 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: /192.168.18.218:9000. Already tried 0 time(s). 2012-07-04 18:43:23,468 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: /192.168.18.218:9000. Already tried 1 time(s). 2012-07-04 18:43:24,469 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: /192.168.18.218:9000. Already tried 2 time(s). 2012-07-04 18:43:25,470 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: /192.168.18.218:9000. Already tried 3 time(s). 2012-07-04 18:43:26,471 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: /192.168.18.218:9000. Already tried 4 time(s). 2012-07-04 18:43:27,472 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: /192.168.18.218:9000. Already tried 5 time(s). 2012-07-04 18:43:28,473 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: /192.168.18.218:9000. Already tried 6 time(s). 2012-07-04 18:43:29,474 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: /192.168.18.218:9000. Already tried 7 time(s). 2012-07-04 18:43:30,475 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: /192.168.18.218:9000. Already tried 8 time(s). 2012-07-04 18:43:31,475 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: /192.168.18.218:9000. Already tried 9 time(s). 2012-07-04 18:43:31,479 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Call to /192.168.18.218:9000 failed on local exception: java.net.NoRouteToHostException: 沒有到主機的路由 at org.apache.hadoop.ipc.Client.wrapException(Client.java:775) at org.apache.hadoop.ipc.Client.call(Client.java:743) at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:220) at $Proxy4.getProtocolVersion(Unknown Source) at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:359) at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:346) at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:383) at org.apache.hadoop.ipc.RPC.waitForProxy(RPC.java:314) at org.apache.hadoop.ipc.RPC.waitForProxy(RPC.java:291) at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:269) at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:216) at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1283) at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1238) at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1246) at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1368) Caused by: java.net.NoRouteToHostException: 沒有到主機的路由 at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:701)

NameNode啟動start-all.sh時出現上述錯誤,解決辦法如下:

(1)從namenode主機ping其它主機名(如:ping slave1),如果ping不通,原因可能是namenode節點的/etc/hosts配置錯誤

(2)從datanode主機ping namenode主機名,如果ping不通,原因可能是datenode節點的/etc/hosts配置的配置錯誤

解決辦法:以上兩種錯誤都需要修改/etc/hosts,同時保證集群中所有機器的/etc/hosts一致,參考:http://hi.baidu.com/tdfrank/blog/item/a1b9e1d95e3b013f10df9b01.html

(3)查看namenode主機的9000(具體根據core-site.xml中的fs.default.name節點配置)端口,是否打開,如果已打開(如下圖所示),原因可能是防火牆開啟,解決辦法:關閉namenode和datanode主機的防火牆,或者設置防火牆開啟指定端口

[root@master swxing]# netstat -nap | grep 9000
tcp        0      0 ::ffff:192.168.18.218:9000  :::*                        LISTEN      4662/java           
tcp        0      0 ::ffff:192.168.18.218:46116 ::ffff:192.168.18.218:9000  ESTABLISHED 4859/java           
tcp        0      0 ::ffff:192.168.18.218:9000  ::ffff:192.168.18.87:36794  ESTABLISHED 4662/java           
tcp        0      0 ::ffff:192.168.18.218:9000  ::ffff:192.168.18.218:46116 ESTABLISHED 4662/java      

 

[root@master swxing]# service iptables stop

可以參考:http://www.cnblogs.com/siwei1988/archive/2012/07/12/2587527.html  設置開機不啟動防火牆服務,這樣就不用每次開機后都設置了。

(4)格式化硬盤(hadoop namenode -format)后啟動namenode(start-all.sh)

 

以上操作命令是在centos6.1中的操作命令,其它linux系統的操作命令可能有些不一樣,讀者根據自己的系統來定義操作,本文只提供一個思路。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM