windows下使用Eclipse執行MapReduce程式出錯: Failed to set...

逸卿發表於2014-05-05

windows下使用Eclipse執行MapReduce程式出錯: Failed to set...


在windows下用Eclipse執行MapReduce程式會報錯:

12/04/24 15:32:44 WARN util.NativeCodeLoader: Unable to load native-hadoop     library for your platform... using builtin-java classes where applicable
12/04/24 15:32:44 ERROR security.UserGroupInformation:     PriviledgedActionException as:Administrator cause:java.io.IOException: Failed to set     permissions of path: \tmp\hadoop-Administrator\mapred\staging\Administrator-    519341271\.staging to 0700
Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp\hadoop-Administrator\mapred\staging\Administrator-519341271\.staging to 0700

這個問題在網上很常見了, 搜下有很多, 原因和解決方案:

這個是Windows下檔案許可權問題,在Linux下可以正常執行,不存在這樣的問題。

解決方法是將hadoop-x.x.x/src/core/org/apache/hadoop/fs/FileUtil.java裡面方法checkReturnValue的程式碼註釋掉.

再重新編譯生成hadoop-x.x.x-core.jar.

關鍵問題是怎麼重新編譯? 於是網上找怎麼編譯Hadoop的方法, 本來一個很簡單的問題弄了很久都沒解決掉.

其實方法很簡單, 不用重新編譯Hadoop, 僅編譯FileUtil.java即可.

新建一個MapReduce專案, 把hadoop-x.x.x/src/core/org/apache/hadoop/fs/FileUtil.java程式碼複製到src下(注意, 目錄結構也需要), 按上面修改檔案, 然後重新build下, 找到編譯好的.class(兩個), 用解壓軟體開啟hadoop-x.x.x-core.jar, 把這兩個class檔案覆蓋即可.

相關文章