org.apache.hadoop.security.AccessControlException: Permission denied: user=root

原因:hdfs上沒有root用戶,也沒有對應的文件夾/user/root

會默認以root身份去將作業寫入hdfs文件系統中,對應的也就是 HDFS 上的/user/xxx , 我的爲/user/root,   由於 root用戶對hdfs目錄並沒有寫入權限,所以導致異常的發生。而hdfs纔有權限創建/user/root

解決方法:

1、第一種

在hdfs的配置文件中,將dfs.permissions修改爲False(不推薦)

2、第二種

執行這樣的操作,使用hdfs用戶(最高權限)

hadoop dfs -mkdir -p /user/root(如果路徑存在可不執行)

hadoop dfs -chown root:hdfs /user/root(如果所屬用戶一致可不執行)
hadoop dfs -chmod 777 /user/root(如果執行上面操作已解決可不執行,我沒有走)

3.第三種

vim /etc/profile

添加:export HADOOP_USER_NAME=hdfs(hdfs爲最高權限)
source /etc/profile(記得執行,以保證立即生效)

也可以執行 sed -i '$a export HADOOP_USER_NAME=hdfs' ,記得也要source一下

注意:root可以是其他的用戶(路徑),如報錯是/user/xxx,將root換成xxx即可。

第二種與第三種區別

第二種    第三種
host    全集羣的hosts都可以訪問沒有問題    只有做了環境變量配置的主機可用
root用戶調用資源    root用戶可以調用hdfs資源    root不能調用資源,如果計算是出現需要使用root用戶調用的資源一樣會報錯
root執行hdfs命令    不能    能

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章