編譯Hadoop-eclipse-plugin插件


    最近我將hadoop的集群搭建起來了,並且實現了hadoop與oracle數據庫之間的交互,接下來就是進入到Mapreduce高級編程階段了,當然這必須跟相應的業務和算法有關。但是Mapreduce的開發環境勢必需要搭建的。因此,我的hadoop集群是在linux上搭建的,但是我的想法是:

    1、將我的開發環境搭建到windows7的環境下,

    2、采用eclipse來開發。

  為了實現這個目標,於是我就百度和google了一下,通過百度,google發現要想實現我的想法必須要編譯安裝hadoop的eclipse插件,因為不同的hadoop版本對應不同的eclipse插件,因此需要自行編譯hadoop的eclipse插件。編譯eclipse插件必須要有源碼,因此通過https://github.com/winghc/hadoop2x-eclipse-plugin 下載源碼。我下載的是hadoop2x-eclipse-plugin-master.zip。源碼有了,接下來就是准備編譯了,編譯之前需要做一些准備工作,那就是需要有編譯的環境,編譯hadoop2x-eclipse-plugin-master.zip所需要的環境有:

    (1)jdk1.7

      安裝jdk1.7並配置相應的環境變量,參考http://www.cnblogs.com/ljy2013/articles/4414851.html

     (2)ant 

       1)下載地址:http://ant.apache.org/bindownload.cgi

           apache-ant-1.9.4-bin.zip

      2)解壓文件即可,並配置相應的環境變量

          ANT_HOME=E:\profession-software\apache-ant\apache-ant-1.9.4-bin\apache-ant-1.9.4

          path=%path%;%ANT_HOME%\bin

       驗證安裝是否成功:ant -version

    (3)之前自己已經編譯過的hadoop-2.5.2的hadoop-2.5.2.tar.gz文件,解壓縮至本地。若不會編譯,請參考http://www.cnblogs.com/ljy2013/articles/4364003.html

        由於編譯hadoop的eclipse插件需要hadoop相應的jar包。所以必須要有hadoop的安裝文件,前面我已經將hadoop2.5.2編譯好了,剛好可以拿過來使用。

        並配置相應的環境變量:

          HADOOP_HOME=E:\profession-software\hadoop\hadoop2.5.2\hadoop2.5.2-x86_64\hadoop-x86_64-2.5.2\hadoop-2.5.2

          path=%path%;%HADOOP_HOME%\bin

   (4)解壓縮hadoop2x-eclipse-plugin-master.zip文件,將其解壓在E:\profession-software\hadoop-eclipse-plugin\hadoop2x-eclipse-plugin-master下

        通過命令行cmd進入Hadoop-eclipse-plugin解壓縮目錄下,執行

          ant jar -Dversion=2.x.x -Dhadoop.version=2.x.x -Declipse.home=/opt/eclipse -Dhadoop.home=/usr/share/hadoop

            Declipse.home表示的是eclipse的目錄,就是需要使用的eclipse的目錄

            Dhadoop.home表示的是hadoop的目錄,即上面步驟3)的目錄。

            -Dhadoop.version,-Dversion都表示的是hadoop的版本

    原本以為就這樣子可以成功的,但是我心里早有准備,編譯源碼不可能這么容易成功的,要知道想當年第一次編譯hadoop源碼的時候,那是多么的艱難困苦,但都是將它拿下了。還是不錯的。下面把編譯Hadoop-eclipse-plugin的問題一個一個的說明一下:

    問題1:按照上面的步驟執行命令后,首先第一個會出現的就是一直停在ivy-resolve-common處一直不動,一開始還以為要等一會,可是等了一兩個小時都沒反應,這肯定是有問題。

      出現這個問題的原因是執行上面的命令的時候,會查找相應的jar包,若沒有的會一直停在那里,但實際上編譯Hadoop-eclipse-plugin並不需要common相關的包.

    解決的辦法是:修改Hadoop-eclipse-plugin解壓縮目錄\src\contrib\eclipse-plugin\build.xml文件

        找到:

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

        將其去掉depends="init, ivy-retrieve-common" 修改為

            <target name="compile" unless="skip.contrib">   即可

        在重新執行(4)的命令。接下來就會出現問題2

    問題2:在命令行會提示copy不到相關jar包的錯誤

        libraries.properties文件中的jar包的版本找不到,因為對應的是在我的hadoop2.5.2版本下編譯,該階段是將hadoop主目錄下的jar包復制到插件當中,因此需要修改jar的版本。

      解決辦法:

          修改Hadoop-eclipse-plugin解壓縮目錄\ivy\libraries.properties文件,將報錯的jar包版本號跟換成與"HADOOP_HOME"\share\hadoop\common\lib下面jar對應的版本號

            此步可能會有多個jar包版本不匹配,需要多次修改。

    問題3:出現在hadoop主目錄\share\common\lib目錄下找不到htrace-core-3.0.4.jar包,

        沒辦法,我只好在網上下載htrace-core-3.0.4.jar,並將其放到hadoop主目錄\share\common\lib目錄下即可。

  好了,問題都解決了,編譯成功!!!

  (5)編譯好之后,會在Hadoop-eclipse-plugin解壓縮目錄下生成build文件夾,則生成的插件在

      在Hadoop-eclipse-plugin解壓縮目錄\build\contrib\eclipse-plugin下生成hadoop-eclipse-plugin-2.x.x.jar插件 

  (6)將hadoop-eclipse-plugin-2.x.x.jar放到eclipse的plugins目錄下,啟動eclipse 

  (7)打開window===>prefernces, 找到Hadoop Map/Reduce選項卡

      配置hadoop installation directory目錄,指向hadoop的安裝目錄

   (8)打開window====>show view====>other,找到Map/Reduce Locations,使其在eclipse中顯示,可以看到eclipse上有一個大象的圖標。

   (9)在Map/Reduce Locations中右鍵=====>new hadoop locations,會顯示如下圖所示:

      

      在這里面需要配置以下參數:Host是對應集群上的Namenode節點的IP地址 ,Map/reduce Master 中的Port是對應hadoop的配置文件hdfs-site.xml中的dfs.jobtracker.address 對應的端口值,DFS Master 中Port則是hdfs-site.xml中dfs.defaultFS對應的端口的值。User name 是指你的hadoop集群用那個用戶來操作的。

    若想修改更多的參數,可以點擊 Advanced Parameters選項卡,里面有各種參數設置。如下圖所示

      

 至此,hadoop的eclipse插件已經編譯和配置好了,接下來就可以創建hadoop中的Mapreduce工程了。並進行測試了。

    

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM