首先,我使用HortonWorks Sandbox作为Hadoop dist,根本没有自定义配置。
一旦连接到沙箱,我就可以列出HDFS目录的文件,执行以下操作:
[root@sandbox ~]# hadoop fs -ls hdfs:///user/guest
但是如果我尝试指定主机和端口,我只会收到错误:
[root@sandbox ~]# hadoop fs -ls hdfs://localhost:8020/user/guest
ls: Call From sandbox.hortonworks.com/10.0.2.15 to localhost:8020 failed on connection exception: java.net.ConnectException: Connexion refusée; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
[root@sandbox ~]# hadoop fs -ls hdfs://localhost:9000/user/guest
ls: Call From sandbox.hortonworks.com/10.0.2.15 to localhost:9000 failed on connection exception: java.net.ConnectException: Connexion refusée; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
一旦我知道要使用的正确主机和端口,我将能够在我的 Java 调用中使用它们:
Path pt = new Path("hdfs://host:port/user/guest/test-text-file.txt");
检查属性的值 fs.defaultFS
core-site.xml
它包含 IP地址/主机名和端口,NameNode 守护程序在启动时应绑定到该地址/主机名和端口。
我看到您正在使用 hortonworks 沙盒,这是core-site.xml
的房产,位于/etc/hadoop/conf/core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://sandbox.hortonworks.com:8020</value>
</property>
所以,你可以尝试这样的事情:
hadoop fs -ls hdfs://sandbox.hortonworks.com:8020/user/guest
或者您也可以在我的 vm 上从 /etc/hosts
中各自的条目中替换 sandbox.hortonworks.com
的 IP 地址,如下所示:
127.0.0.1 localhost.localdomain localhost
192.168.1.3 sandbox.hortonworks.com sandbox
所以,我也可以试试这个:
hadoop fs -ls hdfs://192.168.1.3:8020/user/guest