在hadoop,hbase,hive,spark執行某些命令時,可能遇到以下問題
Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x
這是因為root用戶沒有相應權限導致的
解決方法有以下幾種
1.第一種解決方案
在hdfs上/user目錄下創建root目錄,需要在HDFS上有一個用戶主目錄
作為HDFS用戶登錄並為root創建一個主目錄。
# su hdfs
$ hdfs dfs -mkdir /user/root
$ hdfs dfs -chown root:root /user/root
如果已經有了/user/root ,查看下文件的權限
# hdfs dfs -ls /user
改為root所有:
$ hdfs dfs -chown root:root /user/root
2.第二種解決方案
第一步:su hdfs,進入hdfs用戶。
# su hdfs
第二步:hadoop fs -ls /,看看user的權限。
$ hadoop fs -ls /
Found 3 items
drwxr-xr-x - hbase hbase 0 2019-11-21 12:04 /hbase
drwxrwxrwt - hdfs supergroup 0 2019-11-15 19:38 /tmp
drwxr-xr-x - hdfs supergroup 0 2019-11-21 19:25 /user
第三步:修改權限
$ hadoop fs -chmod 777 /user
$ hadoop fs -ls /
Found 3 items
drwxr-xr-x - hbase hbase 0 2019-11-21 12:04 /hbase
drwxrwxrwt - hdfs supergroup 0 2019-11-15 19:38 /tmp
drwxrwxrwx - hdfs supergroup 0 2019-11-21 19:25 /user
3.第三種解決方案
在執行命令前執行以下命令
export HADOOP_USER_NAME=hdfs
4.第四種解決方案
使用hdfs用戶執行命令
sudo -u hdfs hadoop fs -mkdir /xxx