原因: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命令 不能 能