花了好几天,搭建好windows和linux下连接HDP集群的调试环境,在此记录一下
hadoop2.2.0的版本比hadoop0.x和hadoop1.x结构变化很大,没有eclipse-hadoop插件支持,在网上找了好久才找到,自己编译的比较麻烦,而且不成功,还好最后找到了。
环境及配置:
1.eclipse版本及hadoop插件下载地址:http://download.csdn.net/detail/kangdakangdaa/7880519
如果要用myeclipse开发方便的朋友,采用myeclipse8.6版本,至少我试过8.5版本是不行,不能识别插件
myeclipse8.6下载地址:http://download.csdn.net/detail/lgscofield/4471379
2.为了windows解析域名方便,修改C:\Windows\System32\drivers\etc\hosts文件
编辑添加hadoop集群配置的hosts文件添加进去,如:
192.168.0.128 hadoop1
也可以不添加修改,可以直接用hadoop集群的ip用作远程访问。
接下来我们先来说在linux怎么连接hadoop集群,在windows用eclipse和myeclipse远程连接hadoop集群在文章的末尾有说明
3. 安装配置:
下载eclipse,直接解压,无配置安装, 将插件hadoop-eclipse-plugin-2.2.0.jar放在eclipse/plugins目录下.
运行eclipse.exe。
在eclipse可视窗口,windows——>show view——Other——>MapReduce Tools——>mapreduce locations.
在界面上显示的Mapreduce Locations下方,右键点击New Mapreduce Locations:
配置如下:
参数提示:Location name:随便取个名字,如ccbhadoop
Map/Reduce(V2) Master:根据hdfs的config(可从Ambari的配置界面上查找)中配置dfs.datanode.ipc.address的值填写。
DFS Master:Namenode的IP和端口,根据core-site.xml中的配置fs.defaultFS的值填写。这个配置非常重要。
配置成功后可以看到Package Explorer一栏以下信息:
如果打开eclipse时看不到这一栏,可打开Window——》Open Perspective——》Other——》Map/Reduce.如果没有这一项,说明插件未被正确识别。
打开window——preferences对话框,搜索hadoop,找到“Hadoop Map/Reduce”项,点击Browse...配置hadoop源的路径,也可以将hadoop-2.2.0.2.1.0.0-92复制到其他目录下,但是要在该目录下有lib目录,这样新建hadoop工程时就能自动加载该目录下所有的jar包。
新建mapreduce工程:
File——》Project——》Map/Reduce Project——》finish
打开工程,可以看到配置路径的jar包已经导入进来:
添加WordCount.java,运行:如果不需要加参数,可直接Run
如需要配置参数,如输入路径输出路径:
右键——Run as——Run Configurations:
再Run.在console窗口查看是否运行成功。
可以看到DFS Locations的文件与输入输出路径是对应的
提示:在DFS Locations上显示的文件可以直接右键添加/删除,然后在相应的文件下,右键刷新Refresh。
Windows下远程连接linux下hadoop集群
注意:步骤与以上基本一致,为了保证网络畅通,需要主机与Namenode相互之间能ping通即可,(不需要ssh,也不需要安装unix虚拟环境cygwin)。
Myeclipse8.6版本能连接成功,试过8.5的不能正确识别插件。
将hadoop-eclipse-plugin-2.2.0.jar重命名为hadoop-myeclipse-2.2.0-plugin.jar,放置在myeclipse8.6/dropins目录下。然后配置过程与以上第2步完全一致。
疑问说明:
1.windows远程连接hadoop集群需要安装Cygwin?
网上有很多文章都说通过Cygwin来连接hadoop的,但是我认为hadoop本来是在linux下安装使用的,在windows下安装Cygwin来安装hadoop是为了模拟linux的环境,能够使用linux下的命令脚本,所以最好在linux下环境下安装学习,我就是在VM虚拟机安装了伪分布式的hadoop,先实现与windows的通信(也就是相互ping通),然后在windows下通过myeclipse来开发调试程序,与上面的效果是一致的。