我正在使用 Hadoop 的 HDFS 的 REST 接口作为通过网络存储文件的便捷方式。为了测试,我按照以下说明在我的 mac(10.8.5)上安装了 hadoop:
http://importantfish.com/how-to-install-hadoop-on-mac-os-x/
这就像一个魅力,我能够启动 hadoop 并运行一个基本测试:
hadoop-examples-1.1.2.jar pi 10 100
现在,我正在使用 python 客户端来处理与 webhdfs 之间的 HTTP 请求:
http://pythonhosted.org/pywebhdfs/
但是当我尝试创建一个目录时,我遇到了一个基本的权限错误:
from pywebhdfs.webhdfs import PyWebHdfsClient
hdfs = PyWebHdfsClient()
my_dir = 'user/hdfs/data/new_dir'
hdfs.make_dir(my_dir, permission=755)
回溯(最后一次调用):
文件“”,第 1 行,在
文件“/Library/Python/2.7/site-packages/pywebhdfs/webhdfs.py”中,第 207 行,在 make_dir
_raise_pywebhdfs_exception(response.status_code, response.text )
文件“/Library/Python/2.7/site-packages/pywebhdfs/webhdfs.py”,第 428 行,在 _raise_pywebhdfs_exception 中
引发错误。PyWebHdfsException(msg=message)
pywebhdfs.errors.PyWebHdfsException: {"RemoteException":{"exception" :"AccessControlException","javaClassName":"org.apache.hadoop.security.AccessControlException","message":"权限被拒绝:user=webuser, access=WRITE, inode=\"user\":mlmiller:supergroup:rwxr -xr-x"}}
我还尝试将用户指定为“hdfs”,而不是将 python lib 的默认设置为“webhdfs”,但得到了相同的结果。阅读 30 分钟后,我放弃了,并意识到我不了解 hdfs 用户、hadoop 安全性(我在安装指令后启用)以及我的 unix 用户和权限之间的相互作用。