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”,问题得以解决。

 

posted @ 2013-07-19 10:56  Mr.chenz  阅读(4236)  评论(0编辑  收藏  举报