Win下Eclipse提交hadoop程式出錯:org.apache.hadoop.security.AccessControlException: Permission denied: user=D

逸卿發表於2014-04-25

描述:在window下使用Eclipse進行hadoop的程式編寫,然後Run on hadoop 後,出現如下錯誤:

11/10/28 16:05:53 INFO mapred.JobClient: Running job: job_201110281103_0003
11/10/28 16:05:54 INFO mapred.JobClient: map 0% reduce 0%
11/10/28 16:06:05 INFO mapred.JobClient: Task Id : attempt_201110281103_0003_m_000002_0, Status : FAILED
org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=DrWho, access=WRITE, inode="hadoop":hadoop:supergroup:rwxr-xr-x
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

 

解決方法:

  到伺服器上修改hadoop的配置檔案:conf/hdfs-core.xml, 找到 dfs.permissions 的配置項 , 將value值改為 false

<property>
<name>dfs.permissions</name>
<value>false</value>
<description>
If "true", enable permission checking in HDFS.
If "false", permission checking is turned off,
but all other behavior is unchanged.
Switching from one parameter value to the other does not change the mode,
owner or group of files or directories.
</description>
</property>

 

修改完貌似要重啟下hadoop的程式才能生效

 

開發環境:win xp sp3 ,   Eclipse 3.3  ,   hadoop-0.20.2    

hadoop伺服器部署環境: ubuntu 10.10  ,   hadoop-0.20.2  

小結:  接觸Hadoop沒多久,不知道這樣修改對叢集的安全性有啥影響。


因為Eclipse使用hadoop外掛提交作業時,會預設以 DrWho 身份去將作業寫入hdfs檔案系統中,對應的也就是 HDFS 上的/user/xxx , 我的為/user/hadoop ,   由於 DrWho 使用者對hadoop目錄並沒有寫入許可權,所以導致異常的發生。他提供的解決方法為:放開 hadoop 目錄的許可權 , 命令如下 :$ hadoop fs -chmod 777 /user/hadoop

相關文章