Eclipse 连接Hadoop Connection refused 问题

今天帮别人装hadoop 伪分布 遇到了个问题解决了很久 记录一下。
环境:ubuntu VM虚拟机下安装的 hadoop 1.2.1
在使用hdfs的 java api 时,连接hadoop 伪分布式安装的hdfs, 总是报出 Connection Refused。查遍了网上诸多博客,尝试了很多办法。包括:
重新配置了ip,确认关闭了防火墙(ubuntu 的 ufw),确认能ping通虚拟机ip,NameNode的再次格式化,hadoop开启后,jps命令显示五个进程也正常工作。其中,NameNode重新格式化要注意删除hadoop.tmp.dir 配置的文件夹,不然DataNode 和NameNode 数据不一致,DataNode会启动失败。
最奇怪的是,网页端的访问是ok的,如果虚拟机不能访问,或者端口没有成功打开,那网页怎么能显示,而且网页hdfs的端口号就是9000,这与配置文件的设置也是一致的。
HDFS WebUi

hadoop@hadoop-master:~$ jps
6433 Jps
6331 TaskTracker
6098 SecondaryNameNode
6183 JobTracker
5944 DataNode
conf中几个重要文件配置:
core-site.xml:
<configuration>
    <property>  
        <name>fs.default.name</name>  
        <value>hdfs://www.hadoop.org:9000</value>  
    </property>  

    <property>  
        <name>hadoop.tmp.dir</name>  
        <value>/usr/local/hadoop/hadoop-1.2.1/tmp</value>  
    </property>   
</configuration>
hdfs-site.xml:
<configuration>
    <property>  
        <name>dfs.replication</name>  
        <value>1</value>  
    </property>   

   <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
</configuration>

而我为了能在window中显示网页,统一配置了ubuntu 和window端的hosts 主机名和域名,这样ubuntu返回的域名在window中照样可以找到对应的ip,也就可以方便后面MapReduce job的查看 和 hdfs 的查看,方便一些。
C:\Windows\System32\drivers\etc\hosts添加

#hadoop 1.x
192.168.159.128  hadoop-master www.hadoop.org

ubuntu 端的/etc/hosts 如下

127.0.0.1       localhost
127.0.1.1       hadoop-master    www.hadoop.org

这样配置后,理论上eclipse 是可以顺利操作HDFS的,毕竟50070端口的webUi 是可以显示dfs上的文件,但是不管是执行java api 代码 还是用hadoop 1.2.1 的eclipse插件,都拒绝连接,no futher information。万念俱灰打算放弃的时候,尝试修改了下 /etc/hosts。修改为:

127.0.0.1            localhost
192.168.159.128      hadoop-master    www.hadoop.org

再试了以下,eclipse 成功连接了。究其原因,可能是eclipse读取配置文件,hdfs默认名为 hdfs://www.hadoop.org:9000 ,在ubuntu中执行时,www.hadoop.org域名对应的是127.0.1.1,而在eclipse中再试图连接,显然连接不上。

猜你喜欢

转载自blog.csdn.net/sinat_30333853/article/details/53504423