引言:咱們在作map reduce的時候遇到這種問題,用他指定的用戶去執行mapreduce就行。好比他要求hdfs,咱們就用hdfs用戶執行,代碼以下:安全
System.setProperty("HADOOP_USER_NAME", "hdfs");服務器
第一步:oop
解決方法:學習
到服務器上修改hadoop的配置文件:conf/hdfs-core.xml, 找到 dfs.permissions 的配置項 , 將value值改成 falsespa
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>xml
注意,實驗平臺能夠這麼設置,可是工做中,不能這樣,這樣不安全。hadoop
若是仍是不行,就是dfs沒有權限spark
第二步:io
產生問題緣由:登錄
環境hadoop2,cdh5建立
使用hadoop fs -mkdir /usr/xxx建立文件路徑時,出現權限問題
===========================================================
1.hadoop fs -ls /user
檢查這個路徑下面的用戶權限學習
drwxrwxrwt - yarn hadoop 0 2014-09-03 11:58 /user/history
drwxr-xr-x - hdfs hadoop 0 2014-09-03 12:00 /user/spark
其中:yarn--建立人,hadoop ---組,而root用戶屬於訪客類型的
2.使用hdfs這個用戶登陸
sudo -uhdfs hadoop fs -mkdir /usr/
3.經過hdfs用戶更改所在用戶的權限
sudo -uhdfs hadoop fs -chown 用戶:用戶組 /usr
好比過咱們是root用戶,能夠用命令 groups root ,查看root用戶的組,獲得組也是root如今更改用戶的權限
sudo -uhdfs hadoop fs -chown root:root /usr
再用命令 hadoop fs -ls / 能夠看到 目錄 /usr,用戶名是root,用戶組是root
就搞定了。