Я работаю над использованием интерфейса REST для HDFS Hadoop в качестве удобного способа хранения файлов по сети. Для проверки я установил на свой Mac (10.8.5) hadoop, следуя этим инструкциям:
http://importantfish.com/how-to-install-hadoop-on-mac-os-x/
Это сработало как шарм, и я могу запустить hadoop и запустить базовый тест:
hadoop-examples-1.1.2.jar пи 10 100
Теперь я использую клиент python для обработки HTTP-запросов к/от webhdfs:
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 , доступ=ЗАПИСЬ, inode=\"пользователь\":mlmiller:супергруппа:rwxr-xr-x"}}
Я также попытался указать пользователя как «hdfs» вместо значения по умолчанию для библиотеки python «webhdfs», но получил тот же результат. После 30-минутного чтения я сдался и понял, что не понимаю взаимодействия пользователей hdfs, безопасности Hadoop (которую я включил в соответствии с инструкциями по установке), моего пользователя Unix и разрешений.