我有一個運行1.0.4的小型10節點hadoop羣集,我試圖讓它安裝,以便能夠從網絡上的機器提交作業不是NameNode。我有一個簡單的示例設置,我使用ToolRunner
執行作業,手動構建JobConf
,並使用JobClient.submitJob()
提交。當我從NameNode運行它時,一切都按預期工作。遠程執行Hadoop作業時在減少階段出現異常
當我從作業提交網絡中的任何其他節點和所有地圖的任務都成功完成運行,但所有的reduce任務失敗,但以下情況除外:
org.apache.hadoop.util.DiskChecker$DiskErrorException: Could not find output/map_0.out in any of the configured local directories
at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathToRead(LocalDirAllocator.java:429)
at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathToRead(LocalDirAllocator.java:160)
at org.apache.hadoop.mapred.MapOutputFile.getInputFile(MapOutputFile.java:161)
at org.apache.hadoop.mapred.ReduceTask.getMapFiles(ReduceTask.java:220)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:398)
at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
at org.apache.hadoop.mapred.Child.main(Child.java:249)
我認爲,這意味着,降低任務無法找到映射器的輸出。我相當肯定我只是在某處丟失了一個配置值,但我無法弄清楚哪些(我試過mapred.local.dir
和hadoop.tmp.dir
沒有成功)。有誰知道上面的消息究竟意味着什麼以及如何解決它,或者知道一個簡單的方法來從NameNode以外的機器執行作業?
編輯:我認爲這也可能與權限有關。 hadoop
用戶幾乎擁有hdfs上的所有文件,但是當我在另一臺機器上登錄時,它就是一個不同的用戶名。我已經嘗試了所有集羣中的類似this節點上更新mapred-site.xml
,和包裝JobClient.submitJob()
內UserGroupInformation.doAs()
,但我仍然得到類似的錯誤:
SEVERE: PriviledgedActionException as:hadoop via oren cause:org.apache.hadoop.ipc.RemoteException: User: oren is not allowed to impersonate hadoop
工作, 你設法解決這一問題 - 我面臨着同樣的一個?你能提供任何輸入嗎? – 2013-08-22 03:58:27