在windows下用Eclipse運行MapReduce程序會報錯:java
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
這個問題在網上很常見了, 搜下有不少, 緣由和解決方案:apache
這個是Windows下文件權限問題,在Linux下能夠正常運行,不存在這樣的問題。windows
解決方法是將hadoop-x.x.x/src/core/org/apache/hadoop/fs/FileUtil.java裏面方法checkReturnValue的代碼註釋掉.app
再從新編譯生成hadoop-x.x.x-core.jar.oop
關鍵問題是怎麼從新編譯? 因而網上找怎麼編譯Hadoop的方法, 原本一個很簡單的問題弄了好久都沒解決掉.ui
其實方法很簡單, 不用從新編譯Hadoop, 僅編譯FileUtil.java便可.code
新建一個MapReduce項目, 把hadoop-x.x.x/src/core/org/apache/hadoop/fs/FileUtil.java代碼複製到src下(注意, 目錄結構也須要), 按上面修改文件, 而後從新build下, 找到編譯好的.class(兩個), 用解壓軟件打開hadoop-x.x.x-core.jar, 把這兩個class文件覆蓋便可.orm