问题:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
应用环境
Hadoop: apache hadoop1.2.1
Eclipse Version: Kepler Service Release 1
计划在Eclipse中直接运行一些MapReduce测试程序,在 google code上下载了插件:hadoop-0.20.1-eclipse-plugin.jar,但是在配置hadoop location时却报错:
Call to localhost/127.0.0.1:9000 failed on local exception: java.io.EOFException,如图所示:
原因:Hadoop服务端版本和eclipse插件版本不一致。
解决方案:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
所以就重新编译了一个hadoop 1.2.1 eclipse plugin,编译过程如下:
1. 插件源代码在${hadoop源码目录}/src/contrib/eclipse-plugin下面,需要修改build.xml文件如下:
(Note:需要修改的地方已经用蓝色字体进行了标注,其他保持原本默认配置即可
srcdir="${src.dir}"
includes="**/*.java"
destdir="${build.classes}"
debug="on"
deprecation="off">
manifest="${root}/META-INF/MANIFEST.MF">
Note: 其实完全可以剪切这段代码使用,注意修改您机器上的hadoop源码目录路径和eclipse安装路径!
2. MANIFEST.MF修改为:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: MapReduce Tools for Eclipse
Bundle-SymbolicName: org.apache.hadoop.eclipse;singleton:=true
Bundle-Version: 0.18
Bundle-Activator: org.apache.hadoop.eclipse.Activator
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.jdt.launching,
org.eclipse.debug.core,
org.eclipse.jdt,
org.eclipse.jdt.core,
org.eclipse.core.resources,
org.eclipse.ui.ide,
org.eclipse.jdt.ui,
org.eclipse.debug.ui,
org.eclipse.jdt.debug.ui,
org.eclipse.core.expressions,
org.eclipse.ui.cheatsheets,
org.eclipse.ui.console,
org.eclipse.ui.navigator,
org.eclipse.core.filesystem,
org.apache.commons.logging
Eclipse-LazyStart: true
Bundle-ClassPath: classes/,lib/hadoop-core.jar,lib/jackson-core-asl-1.8.8.jar,lib/jackson-mapper-asl-1.8.8.jar,lib/commons-configuration-1.6.jar,lib/commons-lang-2.4.jar,lib/commons-httpclient-3.0.1.jar,lib/commons-cli-1.2.jar
Bundle-Vendor: Apache Hadoop
3. 在hadoop源码目录下新建build/contrib/eclipse-plugin/classes目录。
在${hadoop源码目录}/src/contrib/eclipse-plugin目录下执行:ant,开始编译插件。
编译完成之后,在${hadoop源码目录}/build/contrib/eclipse-plugin/下面会生成hadoop-eclipse-plugin-1.2.1.jar文件,复制到eclipse的plugin目录下即可。