Hadoop1.2.1異常Bad connect ack with firstBadLink (No route to host )
0.說明
Hadoop集群之前運行正常,增加了新節點之后,需要執行負載均衡等相關操作,執行過程當中出現問題。
1.運行異常
查看master上面的日志信息,發現:
[INFO] Exception in createBlockOutputStream java.io.IOException: Bad connect ack with firstBadLink xxx.xxx.xxx.xxx:50010
[INFO] Abandoning block blk_6251991629364444942_18501788
也有以下關鍵信息:
java.net.NoRouteToHostException: No route to host
ERROR org.apache.hadoop.dfs.DataNode:
xxx.xxx.xxx.xxx:50010:DataXceiver: java.net.NoRouteToHostException: No
route to host #沒有到主機的路由
最后查看節點報告信息負載均衡也沒有實現,數據也沒有同步到新節點上。
2.解決辦法
根據報錯信息,我們都可以發現就是網絡連接的問題,master和新節點之間的網絡通信斷了,所以才會沒找到主機路由。辦法如下:
1)從master主機ping其它主機,如果ping不通,原因可能是namenode節點的/etc/hosts配置錯誤。
2)從slave主機ping master主機名,如果ping不通,原因可能是datenode節點的/etc/hosts配置的配置錯誤。
3)查看master主機的9000(具體根據core-site.xml中的fs.default.name節點配置)端口,是否打開。
4)root用戶關閉防火牆。這是最容易出現的問題。用此命令service iptables stop關閉后,一切正常,集群正常使用。關掉所有Datanode上的iptables:
service iptables stop
關閉防火牆個人認為不值得推薦,但是每次出現網絡問題關閉它都很有效。應該要設定相關的策略,允許開放Hadoop的特定端口。網上有個帖子,談到了這個問題http://blog.chinaunix.net/uid-20424888-id-96029.html。
3.個人體驗
如果不關閉防火牆(或者沒有設置相關過濾規則),個人體驗有以下幾種情況出現:
第一:hdfs的web管理頁面,打不開該節點的文件瀏覽頁面,如打不開http://slave2:50075/browseDirectory.jsp?namenodeInfoPort=50070&dir=/。
第二:在刪除和增加節點的時候,數據遷移處理時間長,而且會有很多warning,甚至不能正常完成相關操作。
第三:隨便執行一個命令,或者其他操作,總會有這樣或者那樣的問題出現,不勝其煩。