NoRouteToHostException 而 hadoop fs -copyFromLocal

NoRouteToHostException while hadoop fs -copyFromLocal

我在CentOS7.0上安装了hadoop 2.5.1

并且我正在使用 3 台具有以下主机文件的计算机,与所有 3 台计算机相同

我没有使用 DNS。

XXX.XXX.XXX.65 mccb-com65 #server

XXX.XXX.XXX.66 mccb-com66 #client01

XXX.XXX.XXX.67 mccb-com67 #client02

127.0.0.1 localhost

127.0.1.1 mccb-com65

我执行命令

$hadoop fs -copyFromLocal /home/hadoop/hdfs/hdfs/s_corpus.txt hdfs://XXX.XXX.XXX.65:9000/tmp/

我遇到了以下错误信息

INFO hdfs.DFSClient: Exception in createBlockOutputStream java.net.NoRouteToHostException: No route to host at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739) at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206) at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:529) at org.apache.hadoop.hdfs.DFSOutputStream.createSocketForPipeline(DFSOutputStream.java:1526) at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.createBlockOutputStream(DFSOutputStream.java:1328) at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.nextBlockOutputStream(DFSOutputStream.java:1281) at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:526) 15/02/27 16:57:40 INFO hdfs.DFSClient: Abandoning BP-1257634566-XXX.XXX.XXX.65-1425014347197:blk_1073741837_1013 15/02/27 16:57:40 INFO hdfs.DFSClient: Excluding datanode XXX.XXX.XXX.67:50010 <-- the same as another salve node XXX.XXX.XXX.66

我关闭了两台计算机 mccb-com66 和 mccb-com67 的所有防火墙,如下所示。

$systemctl status iptables

iptables.service - IPv4 firewall with iptables Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled)
Active: inactive (dead)

此外,我还关闭了 selinux。

datanode 和 nodemanager 在两台机器上都存活 我可以检查状态 jps 和 http://mccb-com65:50070http://mccb-com65:8088

我错过了什么?

有人能帮帮我吗???

您的 /etc/hosts 应包含:

XXX.XXX.XXX.65 mccb-com65 #server

XXX.XXX.XXX.66 mccb-com66 #client01

XXX.XXX.XXX.67 mccb-com67 #client02

移除

127.0.0.1 localhost

127.0.1.1 mccb-com65

即使我关闭了 iptables,它也不是有效的解决方案。

我用firewall-cmd一个一个打开端口后,就可以了..

对于所有从站(66 和 67)

$firewall-cmd --zone=public --add-port=8042/tcp
$firewall-cmd --zone=public --add-port=50010/tcp
$firewall-cmd --zone=public --add-port=50020/tcp
$firewall-cmd --zone=public --add-port=50075/tcp
$firewall-cmd --reload

然后就可以了。

但是,由于我无法打开所有需要 运行 Hadoop App 的端口,

关闭firewalld是合理的如

$systemctl stop firewalld
$systemctl disable firewalld

并查看状态

$Systemctl status firewalld