當前位置:編程學習大全網 - 編程語言 - 怎麽自己動手編譯hadoop的eclipse插件

怎麽自己動手編譯hadoop的eclipse插件

 1.在Linux環境中偽分布式部署hadoop(SSH免登陸),運行WordCount實例成功。 blogs.com/PurpleDream/p/4009070.html

2.自己打包hadoop在eclipse中的插件。 blogs.com/PurpleDream/p/4014751.html

3.在eclipse中訪問hadoop運行WordCount成功。

所以我下邊會分三次記錄下我的過程,為自己以後查閱方便,要是能幫助到其他人,自然是更好了!

===============================================================長長的分割線====================================================================

正文:

如果妳想在eclipse中安裝hadoop的插件,壹個很重要的問題就是hadoop的版本與eclipse版本的匹配問題,如果不匹配,可能會導致很多問題。

綜上,我在完成了在Linux的CentOS系統中安裝hadoop並簡單運行WordCount之後(具體參看本文前言中的博客鏈接),將學習的重點放到了hadoop的eclipse插件上。其實網上也有部分文章在介紹如何編寫插件,但是由於我的eclispe版本是Juno,而之前在CentOS安裝的是hadoop-1.0.1,所以沒有找到完全匹配的成功案例。所以最終決定自己也動手變異壹個自己的hadoop插件。

在有了這個想法之後,壹開始會覺得特別困難,但是在真正去做之後,會發現很多問題其實還是可以解決的,只要妳懂得如果使用百度和谷歌,多參考壹下別人的文章,汲取精華,最終壹定會成功的。

第壹步,確定大致流程:

1.首先我需要ant編譯,然後就是hadoop-1.0.1.tar.gz這個安裝包,還有就是eclipse。

2.針對我自己的環境,電腦是Win7,eclispe是Juno,下載了hadoop-1.0.1.tar.gz,就差ant之前沒有安裝。

第二步,安裝ant:

1.我參考的是這篇文章pile" depends="init, ivy-retrieve-common" unless="skip.contrib">

02.

<echo message="contrib: ${name}"/>

03.

<javac

04.

encoding="${build.encoding}"

05.

srcdir="${src.dir}"

06.

includes="**/*.java"

07.

destdir="${build.classes}"

08.

debug="${javac.debug}"

09.

deprecation="${javac.deprecation}"

10.

includeantruntime="on">

11.

<classpath refid="classpath"/>

12.

</javac>

13.

</target>

(3).在<path id="classpath">中添加:<path refid="hadoop-jars"/>,效果如下:

view sourceprint?

1.

<!-- Override classpath to include Eclipse SDK jars -->

2.

<path id="classpath">

3.

<pathelement location="${build.classes}"/>

4.

<pathelement location="${hadoop.root}/build/classes"/>

5.

<path refid="eclipse-sdk-jars"/>

6.

<path refid="hadoop-jars"/>

7.

</path>

(4).在<target name="jar" depends="compile" unless="skip.contrib">這個標簽裏,在<copy file="${hadoop.root}/build/ivy/lib/Hadoop/common/commons-cli-${commons-cli.version}.jar" todir="${build.dir}/lib" verbose="true"/>這個配置的下面添加如下幾個jar包的配置:

view sourceprint?

1.

<copy file="${hadoop.root}/lib/commons-configuration-1.6.jar" todir="${build.dir}/lib" verbose="true"/>

2.

<copy file="${hadoop.root}/lib/commons-mons-lang-2.4.jar" todir="${build.dir}/lib" verbose="true"/>

4.

<copy file="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true"/>

5.

<copy file="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true"/>

最終效果如圖:

view sourceprint?

01.

<!-- Override jar target to specify manifest -->

02.

<target name="jar" depends="compile" unless="skip.contrib">

03.

<mkdir dir="${build.dir}/lib"/>

04.

<copy file="${hadoop.root}/build/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core-1.0.1.jar" verbose="true"/>

05.

<copy file="${hadoop.root}/build/ivy/lib/Hadoop/common/commons-cli-${commons-cli.version}.jar" todir="${build.dir}/lib" verbose="true"/>

06.

07.

<copy file="${hadoop.root}/lib/commons-configuration-1.6.jar" todir="${build.dir}/lib" verbose="true"/>

08.

<copy file="${hadoop.root}/lib/commons-mons-lang-2.4.jar" todir="${build.dir}/lib" verbose="true"/>

10.

<copy file="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true"/>

11.

<copy file="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true"/>

12.

13.

<jar

14.

jarfile="${build.dir}/hadoop-${name}-${version}.jar"

15.

manifest="${root}/META-INF/MANIFEST.MF">

16.

<fileset dir="${build.dir}" includes="classes/ lib/"/>

17.

<fileset dir="${root}" includes="resources/ plugin.xml"/>

18.

</jar>

19.

</target>

(5).在文件末尾</project>標簽之前添加配置:

view sourceprint?

1.

<path id="hadoop-jars">

2.

<fileset dir="${hadoop.root}/">

3.

<include name="hadoop-*.jar"/>

4.

</fileset>

5.

</path>

5.打開hadoop-1.0.1的解壓縮目錄(我的是D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1),復制兩個jar包到對應的目錄文件夾,以我的文件目錄結構舉例如下:

(1).將D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\hadoop-core-1.0.1.jar 復制到D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\build\這個文件夾中

(2).將D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\lib\commons-cli-1.2.jar復制到D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\build\ivy\lib\Hadoop\common這個文件夾中

6.再回到eclipse,打開項目中的\META-INF\MANIFEST.MF文件,做如下的添加:

view sourceprint?

1.

Bundle-ClassPath: classes/,

2.

lib/hadoop-core-1.0.1.jar,

3.

lib/commons-cli-1.2.jar,

4.

lib/commons-configuration-1.6.jar,

5.

lib/commons-mons-lang-2.4.jar,

7.

lib/jackson-core-asl-1.8.8.jar,

8.

lib/jackson-mapper-asl-1.8.8.ja,

7.經過上邊的配置,基本已經完成,我們可以編譯項目了。右擊build.xml文件選擇 Run As Ant Build,編譯成功,生成的hadoop-1.0.1-eclipse-plugin.jar在hadoop-1.0.1解壓目錄的\build\contrib\eclipse-plugin文件夾裏面。

第四步,當然就是在eclipse中配置我們編譯好的插件。

1.把hadoop-1.0.1-eclipse-plugin.jar文件放到eclipse安裝目錄的plugins中,重啟eclipse。重啟後,會在Window->Open Perspective->Other裏,看到大象圖標的Map/Reduce出現,或者是window->Preferences中看到Hadoop Map/Reduce這個選項。

2.window->Preferences中點擊Hadoop Map/Reduce這個選項,將Hadoop的那個解壓縮目錄(我的是D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1)的路徑配置上,配置效果圖如下:

\

3.然後我們在Window->Open Perspective->Other裏,點擊Map/Reduce,切換到這個模式,截圖如下:

\

4.切換到Map/Reduce模式後,我們看到畫面(4)中的截圖,點擊右下角的兩個小圖標,測試有沒有反應,如果有反應,暫時先別配置,這個我下篇博客會具體講。如果怎麽點都沒有反應,則可以做如下操作:

(1).打開項目中的\META-INF\MANIFEST.MF文件,找到之前編譯時,添加的Bundle-ClassPath: classes/ 這個位置,之前我們添加了7個jar包的配置,再增加四個,如下:

view sourceprint?

1.

lib/hadoop-common-0.21.0.jar,

2.

lib/hadoop-hdfs-0.21.0.jar,

3.

lib/log4j-1.2.15.jar,

4.

lib/hadoop-mapred-0.21.0.jar

(2).然後我們還需要去網上下載這四個jar包放到下面的文件夾中,以我的目錄舉例:D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\lib。

(3).然後在重新編譯即可,在替換原來的插件時,在重啟eclipse的過程中,妳可以這樣做:先刪除原來的插件,原來重啟eclipse,確認Map/Reduce沒了;然後再關掉eclipse,將新的插件放到plugins裏,之後再次啟動eclipse。解決這個問題時我在網上參考的文章是:/kky2010_110/article/details/7774747,大家也可以看看~。

(4).上邊所提到的截圖如下:

\

經過上邊說的這些步驟,eclipse中的hadoop插件我們算是編譯完了,這個過程中壹定要註意的是,不要怕失敗,多嘗試,因為hadoop版本與eclipse版本是有關系的,所以導致妳的版本和我的不太壹致,可能會失敗,但是也可能會成功。所以在這裏再次提醒,註意文章開始,我對自己的環境的版本的介紹,尤其是eclipse和hadoop的版本。建議大家如果有時間的話,可以先不管版本,按照我的步驟先走壹遍,如果實在是不成功的話,則可以找個和我壹樣的eclipse和hadoop版本,再體驗壹回。因為,我在這個過程中,就發現,由於是第壹次學hadoop,不見到成功的效果,總覺得少點什麽,總想見識壹下,莫取笑哈~

至於下壹步,如果配置Location和運行WordCount,我會在下壹篇博客中具體說明,謝謝支持,覺得文章還不錯的話,多多點贊,多多留言哈,這將使我充滿動力!

  • 上一篇:java轉型 c++容易麽
  • 下一篇:王國棟的學術成就。
  • copyright 2024編程學習大全網