当hadoop fs -copyFromLocal时,NoRouteToHostException

时间:2015-02-27 08:17:08

标签: java apache hadoop

我在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:createBlockOutputStream中的异常   java.net.NoRouteToHostException:无主机路由   sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)at   sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739)     在   org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)     在org.apache.hadoop.net.NetUtils.connect(NetUtils.java:529)at   org.apache.hadoop.hdfs.DFSOutputStream.createSocketForPipeline(DFSOutputStream.java:1526)     在   org.apache.hadoop.hdfs.DFSOutputStream $ DataStreamer.createBlockOutputStream(DFSOutputStream.java:1328)     在   org.apache.hadoop.hdfs.DFSOutputStream $ DataStreamer.nextBlockOutputStream(DFSOutputStream.java:1281)     在   org.apache.hadoop.hdfs.DFSOutputStream $ DataStreamer.run(DFSOutputStream.java:526)   15/02/27 16:57:40 INFO hdfs.DFSClient:放弃   BP-1257634566-XXX.XXX.XXX.65-1425014347197:blk_1073741837_1013   15/02/27 16:57:40 INFO hdfs.DFSClient:不包括datanode   XXX.XXX.XXX.67:50010 < - 与另一个救助节点XXX.XXX.XXX.66

相同

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

$ systemctl status iptables

  

iptables.service - 带iptables的IPv4防火墙已加载:已加载   (/usr/lib/systemd/system/iptables.service; disabled)
   活性:   不活动(死)

另外我也关闭了selinux。

datanode和nodemanager在两台机器中都处于活动状态 我可以检查一下状态 jps和 http://mccb-com65:50070http://mccb-com65:8088

我失踪了什么?

你能帮助我吗?

2 个答案:

答案 0 :(得分:1)

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

用防火墙-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

答案 1 :(得分:0)

你的/ 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
相关问题