Hadoop 學習之 MapredReduce 程式設計小試

self_control發表於2015-04-22
1、開啟myeclipse 新建一個java 專案,直接把example 中的WordCount.java COPY過來。
2、修改編碼 UTF-8,編譯器 1.6
3、buildpath 把原始碼根目錄下的jar,以及lib下的jar匯入到專案中。
4、src一般放置配置程式碼(xml)。真正的專案程式碼會新建SourceFolder
5、把core-site.xml 放到src目錄下。:注意修改 h1改為地址或修改本地的hosts檔案
6、有可能會遇到許可權不足,是因為hdfs的許可權問題,預設為755 需要改為757
7、報如下錯誤,看日誌,可以知道是FileUtil.checkReturnValue的這個方法報的錯。要想辦法把這個重新編譯替換。
    重新編譯方法:在原始碼中clean 一下。然後在WebRoot\WEB-INF\classes\org\apache\hadoop\fs 中找到FileUtil.class 及 FileUtil$CygPathCommand.class
    把這兩個檔案替換到hadoop-core-1.1.2.jar 中,然後重新引用這個包( 刪除 再 引入 )。
15/04/22 21:07:56 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/04/22 21:07:56 ERROR security.UserGroupInformation: PriviledgedActionException as:xgj cause:java.io.IOException: Failed to set permissions of path: \home\hadoop\hadoop-1.1.2\temp\mapred\staging\xgj-1952505389\.staging to 0700
Exception in thread "main" java.io.IOException: Failed to set permissions of path: \home\hadoop\hadoop-1.1.2\temp\mapred\staging\xgj-1952505389\.staging to 0700
at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:689)
at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:662)
at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:509)
at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:344)
at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:189)
at org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:116)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:918)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:912)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Unknown Source)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1149)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:912)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:500)
at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:530)
at WordCount.main(WordCount.java:69)

8、如果再執行時又報找不到類的一個錯誤,並且與所執行類有關係。解決方法為
   在main 函式中的conf加一個鍵值。
   conf.set("mapred.jar", "D:\\wc.jar");
   然後再匯出一個jar包(本專案的一般的jar包),放到這個位置。再執行就可以了。
   

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30066956/viewspace-1591926/,如需轉載,請註明出處,否則將追究法律責任。

相關文章