【发布时间】:2017-01-04 19:10:48
【问题描述】:
我在 Windows 10 机器上运行 Hadoop Docker 容器。我正在尝试使用this 库编写一个 Python 程序来访问我的 HDFS。我可以使用配置了“http://localhost:50070”的客户端列出文件夹内容(50070 是 webHDFS 端口)。但是,当我尝试读取文件的内容时,我收到一条错误消息,指出无法解析地址。在返回的错误中,主机是我的 Docker 容器“453af3bd9164”的 ID,而不是我所期望的“localhost”或“127.0.0.1”。
我尝试过使用不同的 Docker 容器和不同的 Python 库,但仍然遇到类似的错误。所以我的猜测是我没有正确配置我的 Docker 或 Hadoop 环境。由于我可以从我的 Docker 主机访问 NameNode WebUI 并且列出文件夹内容正常工作,我认为我的数据节点配置可能是问题所在。当我通过 WebUI 检查时,我的数据节点显示为“服务中”,因此它至少正在运行。
如何正确配置我的环境,以便对我的 HDFS 数据节点的 HTTP 调用正常工作?
核心站点.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.datanode.http.address</name>
<value>0.0.0.0:50075</value>
</property>
</configuration>
等/主机:
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 453af3bd9164
192.168.56.1 192.168.56.1
【问题讨论】:
-
我对 hadoop 的看法不为零,但是.... 我很确定您永远不想在配置中使用 localhost。使用真实的主机名。
标签: python hadoop docker ip hdfs