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')
我正在尝试使用 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')