2013-09-25 81 views
0

我正在使用Hadoop的HDFS REST接口作爲一種方便的方式來存儲網絡上的文件。爲了測試我安裝的Hadoop在我下面的這些指示MAC(10.8.5):權限webhdfs上的錯誤

http://importantfish.com/how-to-install-hadoop-on-mac-os-x/

這工作就像一個魅力,我能夠啓動Hadoop和運行一個基本的測試:

的Hadoop -examples-1.1.2.jar的p110 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)
File」/Library/Python/2.7/site-packages/ pywebhdfs/webhdfs.py「,第428行,在_raise_pywebhdfs_exception
raise errors.PyWebHdfsException(msg =消息)
pywebhdfs.errors.PyWebHdfsException:{「RemoteException」:{「exception」:「AccessControlException」,「javaClassName」:「org.apache.hadoop.security.AccessControlException」,「message」:「Permission denied:user = webuser,access = WRITE,inode = \「user \」:mlmiller:超級組: webhdfs',但得到相同的結果。讀完30分鐘後,我放棄了,並意識到我不理解hdfs用戶,hadoop安全性(我在安裝isntructions後啓用)和我的unix用戶和權限之間的相互作用。

回答

1

在走開並閱讀更多文檔後找出這一個。 webdhfs希望您指定一個用戶值,該用戶值與從shell啓動hdfs的unix用戶相匹配。所以,正確的蟒蛇是:

from pywebhdfs.webhdfs import PyWebHdfsClient 
user = <specify_linux_user_who_launched_hadoop> 
hdfs = PyWebHdfsClient(user_name=user) 
my_dir = '%s/data/new_dir' % user 
hdfs.make_dir(my_dir, permission=755) 
2

你需要有PyWebHdfsClient USER_NAME匹配有權您試圖寫入該目錄UNIX用戶。啓動namenode服務的用戶在默認情況下爲「超級用戶」

我編寫了用於響應工作需要的pywebhdfs客戶端。如果您有任何問題或想要在客戶端請求功能,請在github上留下問題,我可以解決它。

https://github.com/ProjectMeniscus/pywebhdfs/issues

謝謝