【问题标题】:Installing Hadoop's Eclipse Plugin安装 Hadoop 的 Eclipse 插件
【发布时间】:2012-12-08 21:19:33
【问题描述】:

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

谢谢, 香农

【问题讨论】:

标签: eclipse plugins hadoop


【解决方案1】:

昨天好不容易安装了hadoop-1.0.4的eclipse插件,测试成功。

插件不工作的原因是jar包丢失了一些libs:

  • commons-cli-1.2.jar
  • commons-configuration-1.6.jar
  • jackson-core-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,玩得开心!

【讨论】:

  • 谢谢克里斯。你是一个救生员。还有一个问题;我采纳了您之前的建议并开始通过 maven 创建 Hadoop 项目,这意味着我不需要 Eclipse 插件来处理此类项目。你认为我应该停止使用 Eclipse 插件吗?我认为 Hadoop 的 Eclipse 插件所带来的困难使它成为一种负担。你同意吗?
  • Hadoop 的 Eclipse 插件为 hadoop map/reduce 和 hdfs 应用程序提供 eclipse 调试支持,提供一个连接 hdfs 和 jobtracker 的 GUI
  • 我已按照您的方法使用命令“ant jar”构建了插件,但我注意到了。你能更详细地表达你的方法吗?谢谢! @hs3180
  • @jerry_sjtu 你能放一些构建信息吗? (ant 的 stdout / stderr 结果)你最好使用 ${plugin_src} 中的 build.xml 构建 jar。
  • 我在提供参数'-Doverride'和'eclipse.home'时已经构建了插件,但是构建的插件似乎不适用于我在ubuntu中的eclipse'INDIGO'。跨度>
【解决方案2】:

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

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

    <!-- <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.root} 文件夹中的 jars,尤其是 hadoop-core-1.0.4.jar 对 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>
    

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

【讨论】:

    猜你喜欢
    • 2012-12-03
    • 2011-07-22
    • 2012-02-24
    • 2012-07-01
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多