編譯Hadoop的Eclipse插件(hadoop-eclipse-plugin.jar)

一、根據hadoop版本下載相應jar包。我用的是hadoop-1.0.3,因此下載的是hadoop-eclipse-plugin-1.0.3.jar版本。html

http://pan.baidu.com/share/link?shareid=2598441536&uk=3709331609&fid=2470815234java

二、解壓jar包,在Eclipse中Import導入hadoop-eclipse-plugin-1.0.3-src文件夾,導進去在Eclipse中個人項目名稱爲MapReduceTools。(hadoop-eclipse-plugin-1.0.3-src爲hadoop-eclipse-plugin-1.0.3.jar解壓後所得文件夾)apache

三、把hadoop-eclipse-plugin-1.0.3-src文件夾下的build-contrib.xml文件拷貝到MapReduceTools項目根目錄底下。app

四、修改build-contrib.xmlless

找到<property name="hadoop.root" location="${root}/../../../"/>修改location爲hadoop的實際解壓目錄eclipse

例如個人hadoop實際解壓目錄爲:E:\qjay\hadoop\src\hadoop-1.0.3maven

則修改成:<property name="hadoop.root" location="E:/qjay/hadoop/src/hadoop-1.0.3"/>ide

查找<property name="eclipse.home" location="Eclipse安裝目錄"/>oop

<property name="version" value="Hadoop安裝版本"/>,若是沒有本身添加ui

例如個人爲:<property name="eclipse.home" location="E:/eclipse"/>

<property name="version" value="1.0.3"/>

五、修改build.xml

找到<import file="../build-contrib.xml"/>,改成<import file="build-contrib.xml"/>

由於這個咱們已經將build-contrib.xml文件放到MapReduceTools項目的根目錄底下了。

六、添加hadoop-core的jar包

找到<path id="classpath">,在下面添加 <pathelement location="${hadoop.root}/hadoop-core-1.0.3.jar"/>

「hadoop-core-1.0.3.jar」根據本身的版本可能會有所不一樣,能夠到${hadoop.root}/下邊去找到相應的jar包。個人${hadoop.root}爲「E:\qjay\hadoop\src\hadoop-1.0.3」就是hadoop的實際解壓目錄。

七、複製E:\qjay\hadoop\src\hadoop-1.0.3\hadoop-core-1.0.3.jar 到E:\qjay\hadoop-eclipse-plugin\hadoop-eclipse-plugin-1.0.3-src\eclipse-plugin\build\hadoop-core-1.0.3.jar;

複製E:\qjay\hadoop\src\hadoop-1.0.3\lib\commons-cli-1.2.jar到E:\qjay\hadoop-eclipse-plugin\hadoop-eclipse-plugin-1.0.3-src\eclipse-plugin\build\ivy\lib\Hadoop\common\commons-cli-1.2.jar,

若是上述目錄沒有則新建一下。

八、修改build.xml

 <!-- Override jar target to specify manifest -->
  <target name="jar" depends="compile" unless="skip.contrib">
    <mkdir dir="${build.dir}/lib"/>

<!--此處個人${build.dir}爲E:\qjay\hadoop\src\hadoop-1.0.3\build\contrib\eclipse-plugin-->
    <copy file="${hadoop.root}/hadoop-core-1.0.3.jar" tofile="${build.dir}/lib/hadoop-core.jar" verbose="true"/>

<!--由於${hadoop.root}爲「E:\qjay\hadoop\src\hadoop-1.0.3。因此此處「${hadoop.root}/hadoop-core-1.0.3.jar」會由於版本的不一樣而不一樣,咱們能夠到hadoop的安裝目錄下(${hadoop.root})找到相應目錄下的相應jar包,後邊狀況-加粗的幾行狀況類似,依次類推。->
    <copy file="${hadoop.root}/lib/commons-cli-1.2.jar"  todir="${build.dir}/lib" verbose="true"/><!--windoop-->
    <copy file="${hadoop.root}/lib/commons-configuration-1.6.jar"  todir="${build.dir}/lib" verbose="true"/><!--windoop-->
    <copy file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar"  todir="${build.dir}/lib" verbose="true"/><!--windoop-->
 <copy file="${hadoop.root}/lib/commons-lang-2.4.jar"  todir="${build.dir}/lib" verbose="true"/><!--windoop-->
 <copy file="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar"  todir="${build.dir}/lib" verbose="true"/><!--windoop-->
 <copy file="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar"  todir="${build.dir}/lib" verbose="true"/><!--windoop-->

    <jar
      jarfile="${build.dir}/hadoop-${name}-${version}.jar"
      manifest="${root}/META-INF/MANIFEST.MF">
      <fileset dir="${build.dir}" includes="classes/ lib/"/>
      <fileset dir="${root}" includes="resources/ plugin.xml"/>
    </jar>
  </target>

九、修改MANIFEST.MF文件(在E:\qjay\hadoop-eclipse-plugin\hadoop-eclipse-plugin-1.0.3-src\eclipse-plugin\META-INF目錄下)

「Bundle-ClassPath」這一欄加入以下信息:

lib/commons-cli-1.2.jar,lib/commons-configuration-1.6.jar,
 lib/commons-httpclient-3.0.1.jar,lib/commons-lang-2.4.jar,lib/jackson-core-asl-1.8.8.jar,
 lib/jackson-mapper-asl-1.8.8.jar

(咱們加入的這些信息中,相應jar會根據版本不一樣而變化,能夠直接將上邊第8條加入的<copy>dsfffffffffffffffff</copy>語句中對應的jar包名拷貝過來。)

十、在Eclipse中運行MapReduceTools項目。(鼠標選中build.xml文件,單擊右鍵選擇Run As---->Ant Build)

若是出現如下信息:

compile:
     [echo] contrib: eclipse-plugin
    [javac] E:\qjay\hadoop-eclipse-plugin\hadoop-eclipse-plugin-1.0.3-src\eclipse-plugin\build.xml:61: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds

十一、則修改build.xml

<target name="compile" depends="init, ivy-retrieve-common" unless="skip.contrib">

將<javac>標籤中加入includeantruntime="on"

Eg:

<target name="compile" depends="init, ivy-retrieve-common" unless="skip.contrib">

<javac
     encoding="${build.encoding}"
     srcdir="${src.dir}"
     includes="**/*.java"
     destdir="${build.classes}"
     debug="${javac.debug}" includeantruntime="on">
     <classpath refid="classpath"/>
    </javac>
  </target>

從新編譯,控制檯打印信息爲如下:

Buildfile: E:\qjay\hadoop-eclipse-plugin\hadoop-eclipse-plugin-1.0.3-src\eclipse-plugin\build.xml
     [echo] E:\qjay\hadoop\src\hadoop-1.0.3\build\contrib\eclipse-plugin
check-contrib:
init:
     [echo] contrib: eclipse-plugin
     [echo] E:\qjay\hadoop\src\hadoop-1.0.3\build\contrib\eclipse-plugin
init-contrib:
ivy-download:
      [get] Getting: http://repo2.maven.org/maven2/org/apache/ivy/ivy/2.1.0/ivy-2.1.0.jar
      [get] To: E:\qjay\hadoop\src\hadoop-1.0.3\ivy\ivy-2.1.0.jar
      [get] Not modified - so not downloaded
ivy-probe-antlib:
ivy-init-antlib:
ivy-init:
[ivy:configure] :: Ivy 2.1.0 - 20090925235825 :: http://ant.apache.org/ivy/ ::
[ivy:configure] :: loading settings :: file = E:\qjay\hadoop\src\hadoop-1.0.3\ivy\ivysettings.xml
ivy-resolve-common:
[ivy:resolve] :: resolving dependencies :: org.apache.hadoop#eclipse-plugin;working@lango-PC
[ivy:resolve]  confs: [common]
[ivy:resolve]  found commons-logging#commons-logging;1.0.4 in maven2
[ivy:resolve]  found log4j#log4j;1.2.15 in maven2
[ivy:resolve] :: resolution report :: resolve 78ms :: artifacts dl 0ms
 ---------------------------------------------------------------------
 |                  |            modules            ||   artifacts   |
 |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
 ---------------------------------------------------------------------
 |      common      |   2   |   0   |   0   |   0   ||   2   |   0   |
 ---------------------------------------------------------------------
ivy-retrieve-common:
[ivy:retrieve] :: retrieving :: org.apache.hadoop#eclipse-plugin [sync]
[ivy:retrieve]  confs: [common]
[ivy:retrieve]  0 artifacts copied, 2 already retrieved (0kB/16ms)
[ivy:cachepath] DEPRECATED: 'ivy.conf.file' is deprecated, use 'ivy.settings.file' instead
[ivy:cachepath] :: loading settings :: file = E:\qjay\hadoop\src\hadoop-1.0.3\ivy\ivysettings.xml
compile:
     [echo] contrib: eclipse-plugin
jar:
BUILD SUCCESSFUL
Total time: 1 second

十二、編譯成功後在E:\qjay\hadoop\src\hadoop-1.0.3\build\contrib\eclipse-plugin文件夾下產生hadoop-eclipse-plugin-1.0.3.jar文件(根據本身版本不一樣可能生成的jar包名稱有差別)。將hadoop-eclipse-plugin-1.0.3.jar拷貝到E:\eclipse\plugins下(Eclipse安裝目錄下的plugins文件夾下)。

1三、重啓Eclipse,打開Windows----->Open Perspective----->Other------->若是有Map/Reduce則成功。

Eg:

在編譯時我主要參考的是這幾位前輩的配置經驗:

一、http://wenku.baidu.com/link?url=J9_p1RCKClsIcJmBzpTjxRGNmZanD_Qp-bBqul4szFsl1lNRLPKKBfjYT1Cv-S1Df1u9yhdWlHMJUvQoKQIePij6GHNxIZfRqf2uo1KFrjy

二、http://www.360doc.com/content/13/0727/22/13159363_303018432.shtml

三、http://blog.csdn.net/arbel/article/details/7674750

四、http://www.oschina.net/question/565065_113586

五、http://www.oschina.net/question/256028_110890

六、http://www.oschina.net/question/256028_110890

對以上幾位前輩表示感謝,若是沒有大家的經驗我可能還要走不少彎路,謝謝!。

相關文章
相關標籤/搜索