安装Hadoop的Eclipse插件

时间:2012-12-08 21:19:34

标签: eclipse plugins hadoop

我对Hadoop的Eclipse插件有这样的噩梦。首先,最新的Hadoop版本(1.1.1)甚至不包含Eclipse插件jar文件。版本1.0.4有插件,但它不起作用。早期版本的Hadoop,如0.22.0有插件,它可以工作,但是这些版本的Hadoop已经老了,我想用最新版本工作。那么,Hadoop的Eclipse插件有什么用?为什么最新版本没有插件,或者如果他们这样做,那么插件不起作用?这个插件每个人都有这么多问题吗?我应该放弃这个插件吗?

谢谢, 香农

2 个答案:

答案 0 :(得分:5)

我昨天很难为hadoop-1.0.4安装了eclipse插件,并成功测试了它。

插件无法正常工作的原因是jar包丢失了一些库:

  • commons-cli-1.2.jar
  • commons-configuration-1.6.jar
  • 杰克逊核-ASL-1.8.8.jar
  • jackson-mapper-asl-1.8.8.jar
  • commons-httpclient-3.0.1.jar
  • 公地琅2.4.jar

你可以将这个罐子从 $ {hadoop} / lib 转到 $ {jar} / lib ,并且不要忘记修改 MANIFEST

为方便起见,我将一些代码添加到 $ {eclipse-plugin-src} /build.xml 目标 jar

<copy file="${hadoop.root}/build/ivy/lib/Hadoop/common/commons-cli-${commons-cli.version}.jar"  todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-configuration-${commons-configuration.version}.jar"  todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-httpclient-${commons-httpclient.version}.jar"  todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-lang-${commons-lang.version}.jar"  todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.root}/lib/jackson-core-asl-${jackson.version}.jar"  todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.root}/lib/jackson-mapper-asl-${jackson.version}.jar"  todir="${build.dir}/lib" verbose="true"/>

并修改 $ {eclipse-plugin-src} / META-INF

中的 MANIFEST.MF
undle-ClassPath: classes/,
 lib/hadoop-core.jar,
 lib/commons-cli-1.2.jar,
 lib/commons-configuration-1.6.jar,
 lib/jackson-core-asl-1.8.8.jar,
 lib/commons-httpclient-3.0.1.jar,
 lib/jackson-mapper-asl-1.8.8.jar,
 lib/commons-lang-2.4.jar

重建eclipse-plugin,并且很有趣!

答案 1 :(得分:2)

那么,结合hs3180的回答,这就是我在配置编译时的实际操作。

  1. $ {eclipse-plugin-src} /build.xml 中,使用以下指令包含eclipse-plugin所需的jar文件。请注意,不是${hadoop.root}/build,而是直接从hadoop-core-${version}.jar复制${hadoop.root},因为如果您使用的是hadoop的编译版本,${hadoop.root}/build文件夹会实际上是空的。由于同样的原因,现在复制commons-cli-${commons-cli.version}.jar来自${hadoop.root}/lib

    <!-- <copy file="${hadoop.root}/build/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core.jar" verbose="true"/> -->
    <!-- <copy file="${hadoop.root}/build/ivy/lib/Hadoop/common/commons-cli-${commons-cli.version}.jar"  todir="${build.dir}/lib" verbose="true"/> -->
    <copy file="${hadoop.root}/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core.jar" verbose="true"/>
    <copy file="${hadoop.root}/lib/commons-cli-${commons-cli.version}.jar"  todir="${build.dir}/lib" verbose="true"/>
    <copy file="${hadoop.root}/lib/commons-configuration-${commons-configuration.version}.jar"  todir="${build.dir}/lib" verbose="true"/>
    <copy file="${hadoop.root}/lib/commons-httpclient-${commons-httpclient.version}.jar"  todir="${build.dir}/lib" verbose="true"/>
    <copy file="${hadoop.root}/lib/commons-lang-${commons-lang.version}.jar"  todir="${build.dir}/lib" verbose="true"/>
    <copy file="${hadoop.root}/lib/jackson-core-asl-${jackson.version}.jar"  todir="${build.dir}/lib" verbose="true"/>
    <copy file="${hadoop.root}/lib/jackson-mapper-asl-${jackson.version}.jar"  todir="${build.dir}/lib" verbose="true"/>
    
  2. 修改 $ {eclipse-plugin-src} /META-INF/MANIFEST.MF 文件,以适应对 $ {eclipse-plugin-src} /所做的更改的build.xml

    Bundle-ClassPath: classes/,
     lib/hadoop-core.jar,
     lib/commons-cli-1.2.jar,
     lib/commons-configuration-1.6.jar,
     lib/jackson-core-asl-1.8.8.jar,
     lib/commons-httpclient-3.0.1.jar,
     lib/jackson-mapper-asl-1.8.8.jar,
     lib/commons-lang-2.4.jar
    
  3. 在两个位置修改 $ {hadoop.root} /src/contrib/build-contrib.xml 文件。第一种是设置插件编译所需的属性。第二个是确保hadoop-core-1.0.4.jar文件夹中的jars,尤其是${hadoop.root}对javac可见,因为eclipse-plugin引用了hadoop类。这个设置与前两个设置有所不同,因此不是必要的。

    <!-- Properties added for compiling eclipse-plugin -->
    <!-- http://yiyujia.blogspot.com/2012/11/build-hadoop-eclipse-plugin-from-source.html -->
    <property name="eclipse.home" location="/Users/xuj/Downloads/eclipse/"/>
    <property name="version" value="1.0.4"/>
    <property name="commons-cli.version" value="1.2"/>
    
    <!-- the normal classpath -->
    <path id="contrib-classpath">
      <fileset dir="${hadoop.root}">
        <include name="*.jar" />
      </fileset>
      <!-- more path elements go here -->
    </path>
    
  4. 正确配置所有文件后,在控制台中从${eclipse-plugin-src}/调用' ant jar '就足够了。