一、导入hadoop插件到eclipse
插件名称:hadoop-eclipse-plugin-2.7.0.jar
我是从网上下载的,还可以自己编译。
放到eclipse安装目录下的plugins文件夹
tip:
1、竟然没有plugins文件夹,自己在安装目录下新建了个文件夹
2、重启eclipse后,一直无法看到网上描述的结果,于是删除了eclipse安装目录下的这个文件:platform.xml(去安装目录下全局搜索),再次重启,ok。
重启eclipse->window->Preferences:
右侧路径是你本地的hadoop安装路径。
二、配置Map/Reduce Locations
Window->Show View->Others->MapReduce Tools-> Map/Reduce Locations->OK
这时选项卡已经打开了,在主界面里找找吧
打开选项卡后,右上方有个小图标(我这里是蓝色的小象顶着一个加号,够隐蔽),弹出新窗口,进行配置:
其中,Host使用你的hadoop集群主机ip
前一个Port使用mapred-site.xml的mapred.job.tracker配置(没有这个配置就加上)
后一个Port使用core-site.xml的fs.default.name配置(没有加上)
按网上教程,说是保存后,Project Explorer窗口应该出现配置好的HDFS,鉴于本人对java开发工具的不熟悉,研究了好一会,才从Eclipse右上方的Open perspectivet小图标下的Map/Reduce..点进去,如下图:
成功后,左侧菜单的Project Explorer里,出现了DFS Locations
三、我遇到的问题
1、提示无法连接到集群服务器的某一个端口
其实这里有个一个非常简单的验证方法,在本机(windows)cmd测试端口开通情况
telnet 你配置的ip 8020
telnet 你配置的ip 9001
我的解决方法是,确保集群的namenode和datanode都正常启动,则解决上述问题。
(其实这个真的不是必须的,到现在我的8020端口也是telnet不通的,在这个问题上纠结了太长时间)
如果能通(进入一个什么都没有的页面),则配置正确。
2、依然报错,
Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: Protocol message end-group tag did not match expected tag.; Host Details : local host is: "USER-20140422SO/192.168.6.33"; destination host is: "h201":9001;
类似于上面的错误信息,各种查找也没找到原因
也是各种查证吧,仅限的几个回复也是说的很笼统,没办法只能自己各种尝试。
后来我又建立了个Map/Reduce Locations,唯一不通的是name和端口,其中端口和前一个是正好相反的配置,发现了一个有趣的问题,DFS Locations区域内的文件夹,看教程都在后面有个括号,里面有数字,代表文件数。而我的一直是(0),一开始一直以为是有问题的,于是就把精力放在前面那个明确报错的Map/Reduce Locations实例的解决上,于是乎,两个下午就这么流失了。。。山穷水尽的时候,放弃了这条路,想着,暂时就不使用eclipse远程连接使用了,我手动打代码,编译,然后不也就能看下真正的hadoop执行效果了吗?
接下来,发生了不可思议的事情。。。
在hadoop fs下创建了文件夹后,无意中在eclipse里那个(0)文件夹上刷新了一下,文!件!出!现!了!
小总结:看来原来的路走的就不对,这个配置本来不是什么难事,因为之前一路走来,很费劲,就想当然的把这个当成个容易出错的大工程了。
至此,Eclipse配置远程连接集群,结束。