2012-04-25 119 views
0

我已經建立了一個hadoop集羣,它運行的很好。最重要的是,我正在使用豬腳本。hadoop豬腳本的權限錯誤

不過,我發現了以下錯誤:

org.apache.hadoop.ipc.RemoteException: org.apache.hadoop.security.AccessControlException: Permission denied: user=tavasthi, access=WRITE, inode="home":dsslmn:supergroup:rwxr-xr-x 

能有人給和指針,以糾正這個錯誤? 在此先感謝。

回答

0

看起來你沒有HDFS的權限來保存到文件夾home。您的用戶tavasthi不是用戶dsslmn,因此無權寫入home文件夾(rwxr-xr-x表示只有用戶具有寫入權限)。

你可以發佈你想要使用pig STORE命令的代碼,以包含路徑,並告訴我們這個輸出文件夾的路徑是否存在,以及你的用戶是否有權寫入它。

+0

我在使用dump命令並將其重定向到我的unix文件系統。所以,我現在不是在處理豬的商店命令。 – 2012-04-25 11:02:24

+0

我認爲轉儲仍然在HDFS上創建一個文件,然後它將內容流式傳輸到標準輸出。 – 2012-04-25 11:19:53

+0

它爲什麼試圖寫入主目錄。有人可以指出哪些財產要解決這裏。 我試着改變pig.temp.dir =/tmp,但它仍然試圖訪問home inode。 – 2012-04-27 09:33:56

0

我能夠通過使用安全的模擬功能 http://hadoop.apache.org/common/docs/stable/Secure_Impersonation.html

在此之後的代碼片斷

UserGroupInformation ugi = 
        UserGroupInformation.createProxyUser("hduser", UserGroupInformation.getLoginUser()); 
      ugi.doAs(new PrivilegedExceptionAction<Void>() { 
       public Void run() throws Exception { 
        Configuration jobconf = new Configuration(); 
     jobconf.set("fs.default.name", "hdfs://server:hdfsport"); 
     jobconf.set("hadoop.job.ugi", "hduser"); 
     jobconf.set("mapred.job.tracker", "server:jobtracker port"); 
       String[] args = new String[] { "data/input", "data/output" }; 
       ToolRunner.run(jobconf, WordCount.class.newInstance(), args); 
        return null; 
       } 
      }); 

登錄用戶ID的遠程(在我的情況下windows桌面主機)應被添加到解決類似的問題, core-site.xml如上所述in the URL