eclipse開發mapreduce程序遇到的環境問題


公司是在windows servers 2008上用eclipse進行開發,hadoop集群也是由多台linux服務器組成的真實集群。由於我要開發的程序涉及到hadoop、hbase、solr,理所當然的引入了相關的核心jar包到工程里面,代碼也沒顯示任何異常。但是在運行代碼的時候卻報了各種錯誤,之前在自己電腦虛擬機上開發mapreduce程序是沒有問題的,現將解決方法記錄一下。

異常1:

Exception in thread "main" java.io.IOException: Cannot initialize Cluster. Please check your configuration for mapreduce.framework.name and the correspond server addresses.  
    at org.apache.hadoop.mapreduce.Cluster.initialize(Cluster.java:119)  
    at org.apache.hadoop.mapreduce.Cluster.<init>(Cluster.java:81)  
    at org.apache.hadoop.mapreduce.Cluster.<init>(Cluster.java:74)  
    at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1188)  
    at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1184)  
    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:1478)  
    at org.apache.hadoop.mapreduce.Job.connect(Job.java:1183)  
    at org.apache.hadoop.mapreduce.Job.submit(Job.java:1212)  
    at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1236)  

解決辦法:

MR程序初始化的時候需要加載“ClientProtocolProvider.class”,查了下有兩個jar包包含這個的子類“hadoop-mapreduce-client-common-2.0.0-cdh4.2.1.jar”、“hadoop-mapreduce-client-jobclient-2.0.0-cdh4.2.1.jar”,將這兩個jar包引入項目中,問題得以解決。

 

異常2:

Exception in thread "main" java.io.IOException: Cannot run program "cygpath": CreateProcess error=2, ϵͳÕҲ»µ½ָ¶
 at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
 at org.apache.hadoop.util.Shell.runCommand(Shell.java:201)
 at org.apache.hadoop.util.Shell.run(Shell.java:183)
 at org.apache.hadoop.fs.FileUtil$CygPathCommand.<init>(FileUtil.java:413)
 at org.apache.hadoop.fs.FileUtil.makeShellPath(FileUtil.java:439)
 at org.apache.hadoop.fs.FileUtil.makeShellPath(FileUtil.java:466)
 at org.apache.hadoop.fs.RawLocalFileSystem.execCommand(RawLocalFileSystem.java:559)
 at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:551)
 at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:355)
 at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:212)

解決辦法:

盡管連接的hadoop平台是在linux上面,但是我們的eclipse調試環境是在windows server 2008,我們需要安裝一個linux模擬器“cygwin”來支持程序的運行。

在windows server 2008開發服務器上安裝好cygwin,然后在環境變量中添加cygwin的bin目錄,比如“D:\Program\cygwin\bin”,問題得以解決。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM