解決從linux本地文件系統上傳文件到HDFS時的權限問題


當使用 hadoop fs -put localfile /user/xxx 時提示:

put: Permission denied: user=root, access=WRITE, inode="/user/shijin":hdfs:supergroup:drwxr-xr-x

表明:權限不夠。這里涉及到兩個方面的權限。一個是本地文件系統中localfile 文件的權限,一個是HDFS上 /user/xxx目錄的權限。

 

先看看 /user/xxx目錄的權限:drwxr-xr-x   - hdfs hdfds      表示它屬於hdfs用戶,組名為 hdfs

因此需要使用 sudo -u hdfs hadoop fs -put localfile /user/xxx   來指定使用 hdfs 用戶來執行上傳命令。

當高興地執行sudo -u hdfs hadoop fs -put localfile /user/xxx  以為能成功上傳時,又報錯:
put: localfile   No such file or directory   說找不到本地文件localfile,可是用 ls 明明 能看到 localfile ,后來在一篇文章中發現發來是lcoalfile的權限問題。

因為我現在是使用hdfs用戶來執行命令。而hdfs用戶對 localfile 是沒有相關權限的。此時,問題基本解決了,就是讓hdfs 用戶對 lcoalfile 有相關權限

 

一種簡單的解決方法。直接把需要上傳的文件復制到/tmp目錄下。因為/tmp目錄的權限為 rwxrwxrwx。然后執行:

sudo -u hdfs hadoop fs -put localfile /user/xxx   上傳成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM