6

我对 Hadoop 的 Eclipse 插件有这样的噩梦。首先,最新的 Hadoop 版本(即 1.1.1)甚至不包括 Eclipse 插件 jar 文件。1.0.4 版有插件,但是不能用。Hadoop 的早期版本(例如 0.22.0)有插件并且可以工作,但是这些版本的 Hadoop 很旧,我想使用最新版本。那么,Hadoop 的 Eclipse 插件有什么用呢?为什么最新版本没有插件,或者如果有,那么插件不起作用?每个人都对这个插件有这么多问题吗?我应该放弃这个插件吗?

谢谢,香农

4

2 回答 2

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
  • commons-lang-2.4.jar

您可以将这个 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,玩得开心!

于 2012-12-10T20:03:26.553 回答
2

好吧,结合 hs3180 的回答,这就是我在配置编译时实际所做的。

  1. ${eclipse-plugin-src}/build.xml中,使用以下指令包含 eclipse-plugin 所需的 jar。请注意,现在直接从 from${hadoop.root}/build复制而不是 from ,因为如果您使用的是 hadoop 的编译版本,则该文件夹实际上是空的。出于同样的原因,现在复制的是。hadoop-core-${version}.jar${hadoop.root}${hadoop.root}/buildcommons-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文件。首先是设置插件编译所需的属性。第二个是确保 jars,尤其是hadoop-core-1.0.4.jar文件${hadoop.root}夹中的 jars 对 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>
    

正确配置所有文件后,从控制台中调用“ ant jar${eclipse-plugin-src}/就足够了。

于 2013-04-19T01:31:41.430 回答