恩,之所以有这篇博客,是因为最近又有童鞋咨询怎么在 windows 7 下用eclipse远程调试部署在linux下的hadoop,其实我自己不这么混搭的,既然有童鞋这么问了,那我就索性随着折腾一把了。 首先说明几点: 远程调试对于本地hadoop版本、远程hadoop版本、eclipse版本都有极为严格的兼容性要求,我所采用的版本如下: (1)本地hadoop:0.20.203(如果客户端和服务端hadoop版本不匹配可能会有协议错误) (2)远程hadoop:0.20.203(因为各个版本的ipc协议都有变化) 下载地址:http://archive.apache.org/dist/hadoop/core/hadoop-0.20.203.0/ (3)eclipse版本:indigo(这个也很重要,不匹配的话,可能eclipse压根就无法识别hadoop插件) 文件md5码以及下载地址:
9017a39354fa65375c6ee748963cf2ff eclipse-jee-indigo-SR2-win32.ziphttp://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/indigosr2 (4)客户端操作系统:win7,远程操作系统:linux(ubuntu/centos等等,只要是linux均可) 上述搭配中如果有任意一项版本不匹配,均可能有异常发生,这都不在本文的讨论范畴,因此开始下文操作前,请务必核对你自己的版本。 第一步:先启动hadoop守护进程 具体参看:http://www.cnblogs.com/flyoung2008/archive/2011/11/29/2268302.html 第二步:在eclipse上安装hadoop插件 1.复制 hadoop安装目录/contrib/eclipse-plugin/hadoop-0.20.203.0-eclipse-plugin.jar 到 eclipse安装目录/plugins/ 下。 3.配置Map/Reduce Locations。 在Window-->Show View中打开Map/Reduce Locations。 Map/Reduce Master
DFS Master
配置完后退出。点击DFS Locations-->Hadoop如果能显示文件夹(2)说明配置正确,如果显示"拒绝连接",请检查你的配置。 如果这一步有问题,请看最后的“注意事项(1)”。 第三步:新建项目。
通过hadoop的命令在HDFS上创建/tmp/workcount目录,命令如下:bin/hadoop fs -mkdir /tmp/wordcount 通过copyFromLocal命令把本地的word.txt复制到HDFS上,命令如下:bin/hadoop fs -copyFromLocal /home/grid/word.txt /tmp/wordcount/word.txt 第五步:运行项目 1.在新建的项目Hadoop,点击WordCount.java,右键-->Run As-->Run Configurations
4.如果运行时报java.lang.OutOfMemoryError: Java heap space 配置VM arguments(在Program arguments下)
关于jvm内存分配理解,请参考:http://my.oschina.net/leejun2005/blog/122963 5.点击Run,运行程序。 截图如下: 注意事项: (1)第2步eclipse可能会报无法连接的错:"Map/Reduce location status updater". org/codehaus/jackson/map/JsonMappingException 经过查询,是由于hadoop的eclipse 插件里面缺少了一些包 按照这篇文章的说明 修改包后 重新运行成功 http://hi.baidu.com/wangyucao1989/blog/item/279cef87c4b37c34c75cc315.html 关于这个eclipse插件的问题,我已经打包好了,请从如下地址下载: http://vdisk.weibo.com/s/xEJGZ (2)第5步,可能会报错: 12/04/24 15:32:44 ERROR
security.UserGroupInformation: PriviledgedActionException
as:Administrator cause:java.io.IOException: Failed to set permissions of
path:
\tmp\hadoop-Administrator\mapred\staging\Administrator-519341271\.staging
to 0700 参考:http://blog.csdn.net/keda8997110/article/details/8533633 解决方法是修改 F:\编程开发\hadoop\older\hadoop-0.20.203.0rc1\hadoop-0.20.203.0\src\core\org \apache\hadoop\fs\RawLocalFileSystem.java ,注释掉 checkReturnValue(有些粗暴,在Window下,可以不用检查)
然后重新编译、打包 hadoop-core-0.20.203.0.jar ,再次运行即可成功。关于这个重新编译hadoop的方法我上面的压缩包里也有教程文档,为了方便起见,我把已经编译打包好的jar也上传了,你直接替换即可。http://vdisk.weibo.com/s/xEJGZ ok,到此你现在应该可以在windows7下远程调试你的hadoop代码了,如果没有成功,请仔细核对各个步骤、各个配置项,Good Luck~ REF: 基于Eclipse的Hadoop应用开发环境配置 http://www.cnblogs.com/flyoung2008/archive/2011/12/09/2281400.html (本文参考此文) http://blog.sina.com.cn/s/blog_62186b4601012acs.html cygwin中安装hadoop+eclipse编译源码并调试 http://dl.iteye.com/topics/download/04aca317-2d9f-3a95-90bf-ec569eb38bbc windows上编译eclipse-plugin for hadoop-0.20.2-cdh3u3 http://superlxw1234.iteye.com/blog/1749038 关于eclipse无法连接报错: "Map/Reduce location status updater". org/codehaus/jackson/map/JsonMappingException 经过查询,是由于hadoop的eclipse 插件里面缺少了包 按照这篇文章的说明 修改包后 重新运行成功 http://hi.baidu.com/wangyucao1989/blog/item/279cef87c4b37c34c75cc315.html 如果已经安装了官方插件,发现没法连接的,需要先从eclipse中删除这个jar包.然后重启eclipse,(防止缓存) 然后再放入新jar包, 再重启eclipse. windows下用eclipse连接linux中的hadoop,并执行mr http://superlxw1234.iteye.com/blog/1583164 注意:myeclipse有2点需要注意: (1)Icon=/home/june/download/myeclipse-8.4.200-linux-gtk-x86/icon.xpm 这里不能有空格、双引号等其它符号。 (2)hadoop的jar包直接丢到 /home/june/Genuitec/MyEclipse 8.5 M2/dropins 即可,不需要找什么 plugins 目录。 Hadoop学习笔记(九):如何在windows上使用eclipse远程连接hadoop进行程序开发 http://www.cnblogs.com/beanmoon/archive/2013/01/05/2845579.html Hadoop作业提交多种方案具体流程详解 |