64位centos 下編譯 hadoop 2.6.0 源碼


64位os下為啥要編譯hadoop就不解釋了,百度一下就能知道原因,下面是步驟:

前提:編譯源碼所在的機器,必須能上網,否則建議不要嘗試了

 

一. 下載必要的組件

a) 下載hadoop源碼 (當前最新的穩定版是2.6.0)
地址  http://mirrors.hust.edu.cn/apache/hadoop/common/stable/hadoop-2.6.0-src.tar.gz
b) 下載apache-ant (centos自帶的ant版本太低,編譯過程中會報錯)
地址: http://mirrors.cnnic.cn/apache//ant/binaries/apache-ant-1.9.4-bin.zip (最新版本即可)
c) 下載protobuf-2.5.0.tar.gz (這是google出品的一個數據傳輸格式)
地址: https://developers.google.com/protocol-buffers/docs/downloads (官網地址要翻!牆!,百度上也能找到國內下載地址)
注意:hadoop2.6.0必須配protobuf 2.5.0版本,版本不匹配,編譯將失敗
d) 下載findbugs
地址: http://prdownloads.sourceforge.net/findbugs/findbugs-3.0.1.tar.gz?download (最新版本即可)
e) 下載maven
地址: http://maven.apache.org/download.cgi (下載最新版即可,本文中用的是3.2.5)
f) 下載jdk
地址:這個比較容易找,大家自己去oracle官網找着,jdk1.6 及以上(本文用的是1.7)

 

二. 設置環境變量

(下面三種方式任選其一即可)
sudo vi /etc/profile
vi ~/.bashrc
vi ~/.bash_profile
上面3個命令隨便用哪個,進入vi編輯器后,參考下面的內容設置環境變量:

(注: 下面的$ JAVA _ HOME部分,博客發表后,好象博客園會自動變成其它格式,正確內容參考圖片)
export ANT_HOME=/home/cargo/apache-ant-1.9.4
export FINDBUGS_HOME=/home/cargo/findbugs-3.0.1
export JAVA_HOME=/home/cargo/jdk1.7.0_76
export M2_HOME=/home/cargo/apache-maven-3.2.5
export PATH=$JAVA_HOME/bin:$PATH:$HOME/bin:$M2_HOME/bin:$ANT_HOME/bin:$FINDBUGS_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

編譯過程中,maven會從互聯網下載很多jar包,強烈建議在局域網搭建一個nexus私服, 另外建議修改maven/conf/settings.xml文件,參考內容如下:

 1 <?xml version="1.0" encoding="UTF-8"?> 
 2 <settings xmlns=" http://maven.apache.org/SETTINGS/1.0.0" 
 3           xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" 
 4           xsi:schemaLocation=" http://maven.apache.org/SETTINGS/1.0.0  http://maven.apache.org/xsd/settings-1.0.0.xsd"> 
 5 
 6   <localRepository>/home/cargo/m2</localRepository> 
 7 
 8   <mirrors> 
 9     <mirror> 
10       <id>nexus</id> 
11       <mirrorOf>*</mirrorOf>      
12       <url> http://172.21.129.57:8081/nexus/content/groups/public/</url> 
13     </mirror>      
14   </mirrors>   
15    
16   <profiles> 
17     <profile> 
18       <id>nexus</id> 
19       <repositories> 
20         <repository> 
21           <id>nexus</id> 
22           <name>Nexus</name> 
23           <url> http://172.21.129.57:8081/nexus/content/groups/public/</url> 
24           <releases><enabled>true</enabled></releases> 
25           <snapshots><enabled>true</enabled></snapshots> 
26         </repository> 
27       </repositories> 
28       <pluginRepositories> 
29         <pluginRepository> 
30           <id>nexus</id> 
31             <name>Nexus</name> 
32             <url> http://172.21.129.57:8081/nexus/content/groups/public/</url> 
33             <releases><enabled>true</enabled></releases> 
34             <snapshots><enabled>true</enabled></snapshots> 
35         </pluginRepository> 
36       </pluginRepositories> 
37     </profile> 
38   </profiles> 
39   <activeProfiles> 
40     <activeProfile>nexus</activeProfile> 
41   </activeProfiles> 
42 
43  </settings>
View Code

<localRepository>/home/cargo/m2</localRepository> 這里設置一個下載jar包的本機倉庫目錄,通常編譯不會很順利,如果因網絡問題下載jar包失敗,下次再運行安裝時, 需要手動清空本地倉庫的緩存,指定一個好記的目錄,清理起來比較方便

上面這一堆弄好后,驗證一下:
驗證ant,輸入anv -version,正常應該反饋以下類似信息:
Apache Ant(TM) version 1.9.4 compiled on April 29 2014

驗證maven,輸入mvn -version,正常應該反饋以下類似信息:
Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-15T01:29:23+08:00)
Maven home: /home/cargo/apache-maven-3.2.5
Java version: 1.7.0_76, vendor: Oracle Corporation
Java home: /home/cargo/jdk1.7.0_76/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-431.23.3.el6.x86_64", arch: "amd64", family: "unix"

 

三.安裝必要的軟件

sudo yum -y install gcc*
sudo yum -y install cmake
sudo yum -y install glibc-headers
sudo yum -y install gcc-c++
sudo yum -y install zip-devel
sudo yum -y install openssl-devel
sudo yum -y install svn
sudo yum -y install git
sudo yum -y install ncurses-devel
sudo yum -y install lzo-devel
sudo yum -y install autoconf
sudo yum -y install libtool
sudo yum -y install automake

這一堆東西都裝上吧,省得編譯過程中提示少這個,少那個

 

四.配置\安裝protobuf

進入protobuf所在目錄,然后按下面順序操作
./configure
make
make check
sudo make install

 

五.編譯hadoop

進入hadoop源代碼目錄,輸入
mvn clean package -DskipTests -Pdist,native -Dtar

上面這行命令大意是先清理target目錄,再打包,同時跳過測試,應用dist,native這2種profile,且最終目標是生成tar包

首次編譯一般不會成功(視人品而定),下面是可能會遇到的一些問題:

a) maven-enforcer-plugin規則驗證失敗

編輯源代碼根目錄下的pom.xml,找到maven-enforcer-plugin所在的部分

<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>1.3.1</version>
          <configuration>
            <rules>
              <requireMavenVersion>
                <version>[3.0.2,)</version>
              </requireMavenVersion>
              <requireJavaVersion>
                <version>1.7</version>
              </requireJavaVersion>
            </rules>
          </configuration>
 </plugin>

注意紅色部分,原來的值是1.6,即規定了使用jdk1.6,如果本機安裝的jdk是1.7,這里相應改一下
b)maven-antrun-plugin各種報錯

同樣嘗試修改pom.xml

 <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>1.7</version>
        <dependencies>
            <dependency>
                  <groupId>org.codehaus.plexus</groupId>
                  <artifactId>plexus-utils</artifactId>
                  <version>2.0.5</version>
              </dependency>
              <dependency>
                    <groupId>org.apache.ant</groupId>
                     <artifactId>ant</artifactId>
                     <version>1.9.4</version>
                </dependency>
        </dependencies>
 </plugin>

紅色這一部分是原來沒有的,可以嘗試加上再試試,其中ant依賴項的版本號,調整成本機實際的ant版本號

c) org.slf4j系列jar包找不到的問題
hadoop所依賴的org.slf4j這一系列的Jar包版本都特別低,如果maven無法自動從互聯網下載成功,可以手動根據出錯信息,到網上下載這些jar包,然后放到本地倉庫的相關目錄

d) apache-tomcat-6.0.41.tar.gz 下載太卡的問題
 [get] Getting:  http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.41/bin/apache-tomcat-6.0.41.tar.gz
 [get] To: /home/cargo/hadoop-2.6.0-src/hadoop-common-project/hadoop-kms/downloads/apache-tomcat-6.0.41.tar.gz
到這一步時,如果下載失敗,可以手動下載這個包,然后放到 hadoop-2.6.0-src/hadoop-common-project/hadoop-kms/downloads/ 目錄下

 

e)內存不足

export MAVEN_OPTS="Xms256m -Xmx512m"

把這一行加到最開始設置環境變量的文件最后即可

 

tips: 如果人品不好,上面這些招數用盡后,仍然各種報錯,可以嘗試把maven命令調整成

mvn compile -DskipTests -Pdist,native -Dtar

即先不打包,僅編譯

 

在編譯的漫長等待中,強烈建議大家讀一下源代碼目錄下的BUILDING.TXT文件,這里面大概描述了各種平台(MAC OS/WINDOWS/LINUX)下的編譯主要步驟,祝各位編譯順利!

歷經千辛萬苦編譯成功后,hadoop-2.6.0-src/hadoop-dist/target 這個目錄下會生成編譯結果

 


免責聲明!

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



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