一、 源碼編譯的目的:
1. 下載的源碼是 32 位的, 需要編譯成 64 位。
2. 爲Hadoop加入新的功能,比如新的壓縮算法(snappy),需要在安裝完snappy後,重新編譯源碼。
二、編譯準備:
1. 確保CentOS能夠連接外網。
2. 切換到 root 用戶,採用root用戶編譯,減少文件夾權限出現的問題。
3. jar 包準備:鏈接: https://pan.baidu.com/s/15W77IRZxooRtmVJN8C-ozw 提取碼: hado
(1)hadoop-2.7.2-src.tar.gz
(2)jdk-8u144-linux-x64.tar.gz
(3)apache-ant-1.9.9-bin.tar.gz
(4)apache-maven-3.0.5-bin.tar.gz
(5)protobuf-2.5.0.tar.gz
三、 jar 包安裝:
1. JDK :
解壓:tar -zxvf jdk-8u144-linux-64.tar.gz
配置環境變量(JAVA_HOME和PATH): 在/etc/profile.d路徑下創建java.sh文件
寫入:export JAVA_HOME=/opt/jdk1.8.0_144
export PATH=$PATH:${JAVA_HOME}/bin
驗證:source /etc/profile # java -version
2. maven:
解壓:tar -zxvf apache-maven-3.0.5-bin.tar.gz
配置環境變量:在/etc/profile.d路徑下創建maven.sh文件
寫入:export MAVEN_HOME=/opt/apache-maven-3.0.5
export PATH=$PATH:${MAVEN_HOME}/bin
驗證:source /etc/profile
mvn -version
更換mirro:
vim ${MAVEN_HOME}/conf/settings.xml
在文件的<mirrors> </mirrors>中添加
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
3. ant:
解壓:tar -zxvf apache-ant-1.9.9-bin.tar.gz
配置環境變量:在/etc/profile.d路徑下創建ant.sh文件
寫入:export ANT_HOME=/opt/apache-ant-1.9.9
export PATH=$PATH:${ANT_HOME}/bin
驗證:source /etc/profile
ant -version
4. protobuf:
安裝glibc-headers和g++:
yum install -y glibc-headers
yum install -y gcc-c++
安裝make和cmake:
yum install -y make
yum install -y cmake
依次運行:
tar -zxvf protobuf-2.5.0.tar.gz -C /opt
cd /opt/protobuf-2.5.0
./configure
make
make check
make install
ldconfig
配置環境變量:在/etc/profile.d路徑下創建protobuf.sh文件
寫入:export LD_LIBRARY_PATH=/opt/protobuf-2.5.0
export PATH=$PATH:${LD_LIBRARY_PATH}
驗證:source /etc/profile
protobuf --version
四、 編譯源碼:
1. 編譯步驟:
解壓源碼:tar -zxvf hadoop-2.7.2-src.tar.gz -C /opt
進入hadoop源碼主目錄:cd /opt/hadoop-2.7.2-src
通過maven執行編譯命令:mvn clean
mvn package -Pdist,native -DskipTests -Dtar
編譯的hadoop包的位置:/opt/hadoop-2.7.2-src/hadoop-dist/target
2. 編譯示例:可以看到編譯用時 22 分鐘
之後在 hadoop-2.7.2-src/hadoop-dist/target 路徑下即可看到編譯好的 hadoop 包