经过一些列繁琐的配置后,hadoop集群终于可以跑起来了,wordcount例子也能正确运行,好了,我们可以进行Map-Reduce开发了。作为一个java程序员,最简单的做法是:把在eclipse中写好的mapreduce程序打成jar包,上传至hadoop集群上,然后启动mapreduce任务。这么做当然可以,可是我们不是大师,谁也不能保证自己写的代码一次就能正确,我们需要反复地测试、修改程序,这样的话,每次修改都要重新打jar包,然后上传至hadoop集群,显得相当地繁琐!
有没有一种办法能让eclipse连接hadoop集群,使之能够直接在eclipse上运行Map-Reduce任务?答案是肯定的,只需要一个eclipse插件就能实现!
这个插件hadoop自己就提供了,在hadoop_home/contrib/eclipse-plugin目录下,你就会看到该插件。但是该插件的安装不是很容易,而且还存在和eclipse版本兼容问题。
下面我就hadoop-0.20.2和eclipse3.5版本说一下我的安装过程。
首先,hadoop-0.20.2挑eclipse版本,一开始我的eclipse版本是3.6,把hadoop提供的插件放进eclipse后,eclipse死活就是不出现hadoop视窗,后来经过不断查阅资料与尝试,发现eclipse3.3、3.4、3.5都可以与hadoop0.20.2插件兼容。如下图,当你打开eclipse-window-perferences时如果出现hadoop视窗,表示插件已经差不多安装成功了,为什么是差不多?是不是有种不祥的预感?呵呵,稍后你就会明白了~
搭建Hadoop的Eclipse开发环境
然后打开Map/Reduce Locations(window-show view-others,输入map),第一次可以新建一个,如下:
搭建Hadoop的Eclipse开发环境
点右键可以进行编辑,如下:
搭建Hadoop的Eclipse开发环境
主要是master的配置(M-R以及HDFS),点击Advanced parameters,这里是一些详细的配置,上面的参数填写后也会反映到这里来,需要注意以下几个参数:
fs.defualt.name:与core-site.xml里fs.default.name设置一致。
mapred.job.tracker:与mapred-site.xml里面mapred.job.tracker设置一致。 dfs.replication:与hdfs-site.xml里面的dfs.replication一致。 hadoop.tmp.dir:与core-site.xml里hadoop.tmp.dir设置一致。
hadoop.job.ugi:并不是设置用户名与密码,是用户与组名,如root,root。如果不填写的话,会以操作系统的用户名与组名登陆hadoop集群,这一块非常容易出错。
好了,这些参数都配好以后,你的eclipse就可以连接hadoop集群了,打开Project Ecplorer,就会看到DFS locations,如下:
下面,我们就可以在eclipse上进行Map-Reduce开发了,当把代码写完,右键选择run on hadoop,咦,怎么没反应?我又重试了好几次,确定没反应,不是我手抖或者看错了。
这是怎么回事呢?这个问题当时确实卡了我很久,插件是官方提供的,配置也正确了,都能连上HDFS了,那怎么不能运行M-R代码呢?
后来在网上搜了好久的资料,发现不少人都遇到过这个问题,给出的解释是:0.20.2版本官方提供的插件已过时,需要下载正确的插件,晕!(我不知道当初公司为什么要选择0.20.2这么一个过度版本,想自定义一个OutputFormat都很难!)
该插件地址:https://issues.apache.org/jira/secure/attachment/12460491/hadoop-eclipse-plugin-0.20.3-SNAPSHOT.jar
把插件下载下来后,重命名为hadoop-0.20.2-eclipse-plugin,重启eclipse,再次选择run on hadoop,终于有反应了,弹出对话框:
搭建Hadoop的Eclipse开发环境
选择之前的配置项,next。。。
本以为大功告成,没想到,噩梦还在继续。。。
搭建Hadoop的Eclipse开发环境
看异常提示,貌似是命令找不到,去网上搜索,原来是在windows下无法运行linux命令,需要在windows安装cygwin来模拟linux环境。
遂下载、安装、配置path,再次run on hadoop,当看到M-R作业提交运行在控制台打印出 map 100% reduce 100%信息时,我几乎留下了感动的眼泪!
搭建Hadoop的Eclipse开发环境
网友评论