Hadoop2.2.0源碼編譯

       Hadoop2.2.0源碼編譯

一、安裝CentOS6.5

    下載地址是:http://www.centoscn.com/CentosSoft/iso/,注意是64位的,大小是4GB,需要下載一段時間的。其實6.x的版本都可以,不一定是6.5。我使用的是VMWare虛擬機,分配了2GB內存,20GB磁盤空間。內存太小,會比較慢;磁盤太小,編譯時可能會出現空間不足的情況。上述不是最低配置,根據自己的機器配置修改吧。還有,一定要保持linux聯網狀態。

       注:以下是下載安裝各種軟件,我把軟件下載後全部複製到/usr/local/app/目錄下;注意下載各軟件包的版本及安裝路徑。

二、下載必要的組件

1、 下載hadoop-2.2.0源碼

    地址: https://archive.apache.org/dist/hadoop/common/hadoop-2.2.0/

      選擇:hadoop-2.2.0-src.tar.gz
2、下載apache-ant
      (centos自帶的ant版本太低,編譯過程中會報錯)
      地址:http://archive.apache.org/dist/ant/binaries/
      選擇:apache-ant-1.9.4-bin.tar.gz
3、下載protobuf-2.5.0.tar.gz 
     (這是google出品的一個數據傳輸格式)
     地址: https://developers.google.com/protocol-buffers/docs/downloads (官網地址要翻!!,百度上也能找到國內下載地址)
     注意:hadoop2.6.0必須配protobuf 2.5.0版本,版本不匹配,編譯將失敗
4、下載findbugs
      地址:http://sourceforge.net/projects/findbugs/files/findbugs/3.0.0/
      選擇:findbugs-3.0.0.tar.gz
5、下載maven
       地址:http://maven.apache.org/download.cgi
       選擇:apache-maven-3.0.5-bin.tar.gz
6、下載jdk
       地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html
       選擇:Java SE Development Kit 7u45   ――〉 jdk-7u45-linux-x64.tar.gz

三、安裝各組件

1. 安裝JDK

               1.1 解壓縮:tar  -zxvf  jdk-7u45-linux-x64.tar.gz
               1.2 重命名:mv  jdk1.7.0_45  jdk
               1.3 設置環境變量:
                     1.3.1 進入文件:vi /etc/profile
                     1.3.2 在文件中新增內容: export  JAVA_HOME=/usr/local/app/jdk
                                              export  PATH=.:$PATH:$JAVA_HOME/bin

                             1.4保存退出文件後,執行以下命令:

           source /etc/profile

                              1.5 驗證:java  -version

2. 安裝maven

2.1 解壓縮:tar -zxvf  apache-maven-3.0.5-bin.tar.gz
2.2 重命名:mv  apache-maven-3.0.5  maven
2.3 設置環境變量:
     2.3.1 進入文件:vi /etc/profile
     2.3.2 在文件中新增內容: export  MAVEN_HOME=/usr/local/app/maven
                           修改: export  PATH=.:$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin

2.4 保存退出文件後,執行以下命令:

              source /etc/profile

2.5 驗證:mvn  -version

3、安裝ant

3.1 解壓縮:tar -zxvf  apache-ant-1.9.4-bin.tar.gz
3.2 重命名:mv  apache- ant-1.9.4  ant
3.3 設置環境變量:
     3.3.1 進入文件:vi /etc/profile
     3.3.2 在文件中新增內容: export  ANT_HOME=/usr/local/app/ant
              修改: export  PATH=.:$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$ANT_HOME/bin
3.4 保存退出文件後,執行以下命令:

              source /etc/profile

3.5 驗證:ant  -version

4、安裝findbugs(可選步驟)

4.1 解壓縮:tar -zxvf  findbugs-3.0.0.tar.gz
4.2 重命名:mv  findbugs-3.0.0  findbugs
4.3 設置環境變量:
     4.3.1 進入文件:vi /etc/profile
     4.3.2 在文件中新增內容: export  FINDBUGS_HOME=/usr/local/app/findbugs
      修改: export         PATH=.:$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$ANT_HOME/bin:$            FINDBUGS_HOME/bin:$FINDBUGS_HOME/bin
4.4 保存退出文件後,執行以下命令:

              source /etc/profile

4.5 驗證:findbugs  -version

5、安裝protoc

5.1 準備:hadoop使用protocol buffer通信,爲了編譯安裝protoc,需要下載幾個工具,順序執行以下命               令:
             yum install gcc  
             yum intall gcc-c++  
             yum install make
     注:如果操作系統是CentOS6.5那麼gccmake已經安裝了。其他版本不一定。在命令運行時,需要用戶經常輸入“y”。
5.2 解壓縮:tar -zxvf  protobuf-2.5.0.tar.gz
5.3 重命名:mv  protobuf-2.5.0  protobuf
5.4  進入protobuf 目錄:cd  protobuf 
     順序執行命令:
            ./configure --prefix=/usr/local/protoc/  
            make && make install
5.5 設置環境變量:
     5.4.1 進入文件:vi /etc/profile
     5.4.2 在文件中新增內容: export  PROTOC_HOME=/usr/local/app/protoc
                            修改:export                                                                                             PATH=.:$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$ANT_HOME/bin:$ FINDBUGS_HOME/bin:$FINDBUGS_HOME/bin:$PROTOC_HOME/bin
5.6保存退出文件後,執行以下命令:

              source /etc/profile

5.7 驗證:protoc  --version

6、安裝其他依賴

順序執行以下命令
            yum  install  cmake  
          yum  install  openssl-devel  
            yum  install  ncurses-devel
安裝完畢即可。

四、編譯hadoop2.2源碼

 1、解壓縮

           tar  -zxvf  hadoop-2.2.0-src.tar.gz

 2、bug修改

 2.1 源代碼中有個bug,這裏需要修改一下,編輯目錄/usr/local/app/hadoop-2.2.0-src        /hadoop-common-project/hadoop-auth中的文件pom.xml
    執行以下命令
gedit pom.xml
2.2在第55行下增加以下內容

                <dependency>

                    <groupId>org.mortbay.jetty</groupId>

                    <artifactId>jetty-util</artifactId>

                    <scope>test</scope>

                </dependency>

    保存退出即可。
            2.3上述bug詳見https://issues.apache.org/jira/browse/HADOOP-10110,在hadoop3中修復了,離             我們太遙遠了。

  3、編譯源碼:

              3.1 好了,現在進入到目錄cd /usr/local/app/hadoop-2.2.0-src中,執行命令:

                            mvnpackage -DskipTests -Pdist,native,docs

              3.2 如果沒有執行第4步,把上面命令中的docs去掉即可,就不必生成文檔了。

                     該命令會從外網下載依賴的jar,編譯hadoop源碼,需要花費很長時間,你可以吃飯了。

           在等待n久之後,可以看到如下的結果:

[INFO] Apache Hadoop Main................................ SUCCESS [6.936s]

[INFO] Apache Hadoop Project POM......................... SUCCESS [4.928s]

[INFO] Apache Hadoop Annotations......................... SUCCESS [9.399s]

[INFO] Apache Hadoop Assemblies.......................... SUCCESS [0.871s]

[INFO] Apache Hadoop Project Dist POM.................... SUCCESS [7.981s]

[INFO] Apache Hadoop Maven Plugins....................... SUCCESS [8.965s]

[INFO] Apache Hadoop Auth ................................SUCCESS [39.748s]

[INFO] Apache Hadoop Auth Examples....................... SUCCESS [11.081s]

[INFO] Apache Hadoop Common.............................. SUCCESS [10:41.466s]

[INFO] Apache Hadoop NFS................................. SUCCESS [26.346s]

[INFO] Apache Hadoop Common Project...................... SUCCESS [0.061s]

[INFO] Apache Hadoop HDFS................................ SUCCESS [12:49.368s]

[INFO] Apache Hadoop HttpFS.............................. SUCCESS [41.896s]

[INFO] Apache Hadoop HDFS BookKeeper Journal............. SUCCESS [41.043s]

[INFO] Apache Hadoop HDFS-NFS............................ SUCCESS [9.650s]

[INFO] Apache Hadoop HDFS Project........................ SUCCESS [0.051s]

[INFO] hadoop-yarn .......................................SUCCESS [1:22.693s]

[INFO] hadoop-yarn-api................................... SUCCESS [1:20.262s]

[INFO] hadoop-yarn-common................................ SUCCESS [1:30.530s]

[INFO] hadoop-yarn-server................................ SUCCESS [0.177s]

[INFO] hadoop-yarn-server-common......................... SUCCESS [15.781s]

[INFO] hadoop-yarn-server-nodemanager.................... SUCCESS [40.800s]

[INFO] hadoop-yarn-server-web-proxy...................... SUCCESS [6.099s]

[INFO] hadoop-yarn-server-resourcemanager................ SUCCESS [37.639s]

[INFO] hadoop-yarn-server-tests.......................... SUCCESS [4.516s]

[INFO] hadoop-yarn-client................................ SUCCESS [25.594s]

[INFO] hadoop-yarn-applications ..........................SUCCESS [0.286s]

[INFO] hadoop-yarn-applications-distributedshell......... SUCCESS [10.143s]

[INFO] hadoop-mapreduce-client........................... SUCCESS [0.119s]

[INFO] hadoop-mapreduce-client-core...................... SUCCESS [55.812s]

[INFO] hadoop-yarn-applications-unmanaged-am-launcher.... SUCCESS [8.749s]

[INFO] hadoop-yarn-site.................................. SUCCESS [0.524s]

[INFO] hadoop-yarn-project............................... SUCCESS [16.641s]

[INFO] hadoop-mapreduce-client-common.................... SUCCESS [40.796s]

[INFO] hadoop-mapreduce-client-shuffle................... SUCCESS [7.628s]

[INFO] hadoop-mapreduce-client-app....................... SUCCESS [24.066s]

[INFO] hadoop-mapreduce-client-hs ........................SUCCESS [13.243s]

[INFO] hadoop-mapreduce-client-jobclient................. SUCCESS [16.670s]

[INFO] hadoop-mapreduce-client-hs-plugins................ SUCCESS [3.787s]

[INFO] Apache Hadoop MapReduce Examples.................. SUCCESS [17.012s]

[INFO] hadoop-mapreduce.................................. SUCCESS [6.459s]

[INFO] Apache Hadoop MapReduce Streaming................. SUCCESS [12.149s]

[INFO] Apache Hadoop Distributed Copy.................... SUCCESS [15.968s]

[INFO] Apache Hadoop Archives............................ SUCCESS [5.851s]

[INFO] Apache Hadoop Rumen............................... SUCCESS [18.364s]

[INFO] Apache Hadoop Gridmix............................. SUCCESS [14.943s]

[INFO] Apache Hadoop Data Join ...........................SUCCESS [9.648s]

[INFO] Apache Hadoop Extras.............................. SUCCESS [5.763s]

[INFO] Apache Hadoop Pipes............................... SUCCESS [16.289s]

[INFO] Apache Hadoop Tools Dist.......................... SUCCESS [3.261s]

[INFO] Apache Hadoop Tools............................... SUCCESS [0.043s]

[INFO] Apache Hadoop Distribution........................ SUCCESS [56.188s]

[INFO] Apache Hadoop Client.............................. SUCCESS [10.910s]

[INFO] Apache Hadoop Mini-Cluster........................ SUCCESS [0.321s]

[INFO]------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO]------------------------------------------------------------------------

[INFO] Total time: 40:00.444s

[INFO] Finished at: Thu Dec 26 12:42:24 CST 2013

[INFO] Final Memory: 109M/362M

[INFO]------------------------------------------------------------------------

 

         3.3好了,編譯完成了。編譯後的代碼在/usr/local/app/hadoop-2.2.0-src/hadoop-dist/target下面。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章