2012-12-08 169 views
6

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

感谢, 香

+0

可能的重复[哪里可以找到用于hadoop 1.0.4的eclipse插件](http://stackoverflow.com/questions/13012852/where-can-i-find-the-eclipse-plugin-for-hadoop -1-0-4) –

回答

5

我昨天安装了Hadoop的1.0.4 Eclipse插件与困难,并测试了它的成功。

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

  • 公地CLI-1.2.jar
  • 公共配置-1.6.jar
  • 杰克逊核心-ASL -1.8.8.jar
  • 杰克逊映射器-ASL-1.8.8.jar
  • 公地httpclient的-3.0.1.jar
  • 公地郎2.4.jar

你可以从$ {}的Hadoop/lib目录$ {}罐子/ lib目录 CP这个罐子,也不要忘记修改清单

为了方便起见,我添加一些代码$ {Eclipse的插件-SRC} /build.xml目标罐子

<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"/> 

$ {改性MANIFEST.MF Eclipse的插件-SRC}/META-INF

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的插件,并有乐趣!

+0

谢谢克里斯。你是一个拯救生命的人。还有一个问题;我采纳了你之前的建议,并开始通过maven创建Hadoop项目,这意味着我不需要这些项目的Eclipse插件。你认为我应该停止使用Eclipse插件吗?我认为Hadoop的Eclipse插件带来的困难使其成为一种负担。你同意吗? – user1888243

+0

Hadoop的Eclipse插件提供对hadoop map/reduce和hdfs应用程序的eclipse调试支持,给出一个GUI来连接hdfs和jobtracker – hs3180

+0

我已经遵循了你的方法,并用命令“ant jar”构建了插件,但我注意到了。你能更详细地表达你的方法吗?谢谢! @ hs3180 –

2

那么,结合hs3180的答案,这里是我在配置编译过程中所做的。

  1. $ {Eclipse的插件-SRC} /build.xml,使用下面的指令来包括由Eclipse的插件需要罐子。这里注意,而不是从${hadoop.root}/build,该hadoop-core-${version}.jar的复制,现在是${hadoop.root}直接,因为如果你使用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的插件-SRC} /META-INF/MANIFEST.MF文件,以适应/build.xml到$ {Eclipse的插件-SRC}所做的更改。

    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,在${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> 
    

当所有文件配置正确,请从${eclipse-plugin-src}/蚂蚁罐子”在控制台应足够休息。