Hadoop1.2.1异常No route to host
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,甚至不能正常完成相关操作。
第三:随便执行一个命令,或者其他操作,总会有这样或者那样的问题出现,不胜其烦。