2013-03-26 53 views
1

我在我的hadoop羣集中啓用了權限管理,但是我正面臨着使用豬發送作業的問題。這是該方案:Hadoop Mapreduce在啓用權限管理時失敗

1 - 我的hadoop/hadoop的用戶

2 - 我有一個運行PIG腳本myuserapp/myuserapp用戶。

3 - 我們設置的路徑/ MYAPP由myuserapp

4所擁有 - 我們設置pig.temp.dir到/ MYAPP /頭/ tmp目錄

但是,當我們的豬嘗試運行的作業我們得到以下錯誤:

job_201303221059_0009 all_actions,filtered,raw_data DISTINCT Message: Job failed! Error - Job initialization failed: org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=realtime, access=EXECUTE, inode="system":hadoop:supergroup:rwx------ 

Hadoop jobtracker需要此權限才能對其服務器進行statup。

我Hadoop的政策是這樣的:

<property> 
<name>security.client.datanode.protocol.acl</name> 
<value>hadoop,myuserapp supergroup,myuserapp</value> 
</property> 
<property> 
<name>security.inter.tracker.protocol.acl</name> 
<value>hadoop,myuserapp supergroup,myuserapp</value> 
</property> 
<property> 
<name>security.job.submission.protocol.acl</name> 
<value>hadoop,myuserapp supergroup,myuserapp</value> 
<property> 

我HDFS-site.xml中:

<property> 
<name>dfs.permissions</name> 
<value>true</value> 
</property> 

<property> 
<name>dfs.datanode.data.dir.perm</name> 
<value>755</value> 
</property> 

<property> 
<name>dfs.web.ugi</name> 
<value>hadoop,supergroup</value> 
</property> 

我的核心站點:

... 
<property> 
<name>hadoop.security.authorization</name> 
<value>true</value> 
</property> 
... 

最後我mapred-site.xml中

... 
<property> 
<name>mapred.local.dir</name> 
<value>/tmp/mapred</value> 
</property> 

<property> 
<name>mapreduce.jobtracker.jobhistory.location</name> 
<value>/opt/logs/hadoop/history</value> 
</property> 

是否缺少配置?我如何處理在限制HDFS集羣中運行作業的多個用戶?

回答

0

公平調度程序用於以用戶身份運行地圖縮減作業,併爲用戶/組創建分離池,但共享資源。起初看,這個調度程序有一些問題與某些目錄的權限有關,不允許其他用戶在作業運行所需的地方執行/寫入。

所以,一個解決方案是使用容量調度程序:

<property> 
<name>mapred.jobtracker.taskScheduler</name> 
<value>org.apache.hadoop.mapred.CapacityTaskScheduler</value> 
</property> 

容量計劃程序,使用多個命名的隊列,其中每個隊列具有地圖的可配置數量和減少時隙。關於容量的一個好處是能夠限制每個用戶正在運行的任務的百分比,以便用戶與配額共享一個集羣。

+0

此解決方案是否工作? – Kumar 2015-01-28 07:31:16

+0

在那個版本中是的! – 2015-03-06 23:13:11

1

你的問題可能是登臺目錄。嘗試添加此屬性mapred-site.xml中:

<property> 
    <name>mapreduce.jobtracker.staging.root.dir</name> 
    <value>/user</value> 
</property> 

然後確保提交用戶(例如,「實時」。)的主目錄和他們所擁有的(如「/用戶/實時」。)它。