首先,我使用 HortonWorks Sandbox 作为 Hadoop dist,完全没有自定义配置。
一旦连接到沙箱,我就可以列出 HDFS 目录的文件:
[root@sandbox ~]# hadoop fs -ls hdfs:///user/guest
但如果我尝试指定主机和端口,我只会收到错误消息:
[root@sandbox ~]# hadoop fs -ls hdfs://localhost:8020/user/guest
ls:从 sandbox.hortonworks.com/10.0.2.15 到 localhost:8020 的调用在连接异常时失败:java.net.ConnectException:Connexion refusée;有关详细信息,请参阅:http://wiki.apache.org/hadoop/ConnectionRefused
[root@sandbox ~]# hadoop fs -ls hdfs://localhost:9000/user/guest
ls:从 sandbox.hortonworks.com/10.0.2.15 到 localhost:9000 的调用在连接异常时失败:java.net.ConnectException:Connexion refusée;有关详细信息,请参阅:http://wiki.apache.org/hadoop/ConnectionRefused
一旦我知道要使用的正确主机和端口,我就可以在我的 Java 调用中使用它们:
Path pt = new Path("hdfs://host:port/user/guest/test-text-file.txt");
最佳答案
检查 core-site.xml
中属性 fs.defaultFS
的值,其中包含 NameNode 守护程序在其上绑定(bind)的 ip 地址/主机名和端口开始了。
我看到您正在使用 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
或者您也可以从 /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
关于java - 用于在 hdfs 中列出目录的主机和端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27106862/