目錄
正文
1、準備階段
使用root登入Centos,并且要求能夠正常連接配接網絡。配置清單如下:
(1)hadoop-2.7.2-src.tar.gz
(2)jdk-8u144-linux-x64.tar.gz
(3)apache-ant-1.9.9-bin.tar.gz(build工具,打包用的)
(4)apache-maven-3.0.5-bin.tar.gz
(5)protobuf-2.5.0.tar.gz(序列化的架構)
1.1、下載下傳Hadoop源碼包
https://hadoop.apache.org/releases.html
1.2、安裝、配置maven
tar -zxvf apache-maven-3.0.5-bin.tar.gz -C /opt/module/
配置maven鏡像源
vi conf/settings.xml
添加以下内容
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
配置maven環境變量
vi /etc/profile
添加一下内容
#MAVEN_HOME
export MAVEN_HOME=/opt/module/apache-maven-3.0.5
export PATH=$PATH:$MAVEN_HOME/bi
使得配置資訊生效
source /etc/profile
驗證maven是否安裝成功:
[root@hadoop-102 software]# mvn -version
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 08:51:28-0500)
Maven home: /opt/module/apache-maven-3.0.5
Java version: 1.8.0_144, vendor: Oracle Corporation
Java home: /opt/module/jdk1.8.0_144/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"
You have new mail in /var/spool/mail/root
[root@hadoop-102 software]#
1.3 、安裝、配置Ant
[root@hadoop-102 software]# tar -zxvf apache-ant-1.9.9-bin.tar.gz -C /opt/module/
[root@hadoop-102 software]# vi /etc/profile
#ANT_HOME
export ANT_HOME=/opt/module/apache-ant-1.9.9
export PATH=$PATH:$ANT_HOME/bin
[root@hadoop-102 software]# source /etc/profile
[root@hadoop-102 software]#
[root@hadoop-102 software]# ant -version
Apache Ant(TM) version 1.9.9 compiled on February 2 2017
[root@hadoop-102 software]#
1.4、安裝glibc-headers 和 gcc-c++
[root@hadoop-102 software]# yum -y install glibc-headers
[root@hadoop-102 software]# yum install gcc-c++
1.5、安裝make和cmake
[root@hadoop-102 software]# yum install make
[root@hadoop-102 software]# yum install cmake
1.6、編譯安裝protobuf
[root@hadoop-102 software]# tar -zxvf protobuf-2.5.0.tar.gz -C /opt/module/
[root@hadoop-102 software]# cd /opt/module/protobuf-2.5.0/
[root@hadoop-102 protobuf-2.5.0]#
[root@hadoop-102 protobuf-2.5.0]#./configure
[root@hadoop-102 protobuf-2.5.0]# make
[root@hadoop-102 protobuf-2.5.0]# make check
[root@hadoop-102 protobuf-2.5.0]# make install
[root@hadoop-102 protobuf-2.5.0]# ldconfig
配置環境變量:
[root@hadoop-102 protobuf-2.5.0]# vi /etc/profile
#LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/opt/module/protobuf-2.5.0
export PATH=$PATH:$LD_LIBRARY_PATH
[root@hadoop-102 protobuf-2.5.0]# source /etc/profile
[root@hadoop-102 protobuf-2.5.0]# protoc --version
libprotoc 2.5.0
1.7、安裝openssl和 ncurses-devel庫
[root@hadoop-102 ~]# yum -y install openssl-devel
[root@hadoop-102 ~]# yum -y install ncurses-devel
jdk的安裝時,解壓後配置環境變量,這裡就不在贅述。
2、編譯Hadoop
2.1、解壓源碼包
[root@hadoop-102 hadoop-2.7.2-src]# tar -zxvf hadoop-2.7.2-src.tar.gz -C /opt/
[root@hadoop-102 software]# cd /opt/hadoop-2.7.2-src/
[root@hadoop-102 hadoop-2.7.2-src]#
2.2、編譯
切入到解壓後的目錄中,執行:
mvn package -Pdist,native -DskipTests -Dtar
2.3、檢視編譯結果
編譯完成後,hadoop包在/opt/hadoop-2.7.2-src/hadoop-dist/target目錄下。
3、編譯源碼過程中常見的問題及解決方案
(1)MAVEN install時候JVM記憶體溢出
處理方式:在環境配置檔案和maven的執行檔案均可調整MAVEN_OPT的heap大小。
(詳情查閱MAVEN 編譯 JVM調優問題,如:http://outofmemory.cn/code-snippet/12652/maven-outofmemoryerror-method)
(2)編譯期間maven報錯。可能網絡阻塞問題導緻依賴庫下載下傳不完整導緻,多次執行指令(一次通過比較難):
mvn package -Pdist,nativeN -DskipTests -Dtar
(3)報ant、protobuf等錯誤,插件下載下傳未完整或者插件版本問題,最開始連結有較多特殊情況,同時推薦
2.7.0版本的問題彙總文章 http://www.tuicool.com/articles/IBn63qf