2012-12-08 222 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}/螞蟻罐子」在控制檯應足夠休息。