Hadoop:无法使用 python 连接到 HDFS(Hadoop)

Hadoop: Failed to connect to HDFS(Hadoop) using python

我正在尝试使用 windows10 中的 python jupyter 工具连接到具有 Ubuntu 的 VM 中的 HDFS。任何人都可以帮助我解决以下连接错误。谢谢。

使用的包: pywebhdfs ubuntu 18.0.4 windows10

'''

from pywebhdfs.webhdfs import PyWebHdfsClient
from pprint import pprint

HDFS_CONNECTION = PyWebHdfsClient(host='localhost',port='9000', user_name='root-sai')

HDFS_CONNECTION.list_dir('hdfs"//localhost:9000/New')

''' 错误:-

ConnectionError: HTTPConnectionPool(host='localhost', port=9000): Max retries exceeded with url: /webhdfs/v1/hdfs%22//localhost%3A9000/New?op=LISTSTATUS&user.name=root-sai (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x00000250AB1FF438>: Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it'))

webhdfs 端口与 RPC 端口不同。默认情况下,它是 50070.

如果webhdfs没有启用(默认是启用的),在hdfs-site.xml

中添加这个属性
<property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
</property>

您可以通过调用 curl 请求来测试是否启用了 webhdfs。

检测/tmp目录是否存在,根据需要更新user.name的值

curl -i "http://localhost:50070/webhdfs/v1/tmp?user.name=hadoop-user&op=GETFILESTATUS"

初始化 PyWebHdfsClient,

HDFS_CONNECTION = PyWebHdfsClient(host='localhost',port='50070', user_name='root-sai')

HDFS_CONNECTION.list_dir('/New')