這里僅介紹一種Hadoop3.0.x版本的源碼編譯方式
編譯過程
1. 下載源碼
2. 安裝依賴環境
3. 源碼編譯
=============================================
一、下載源碼
直接從apache的歸檔網站中下載對應版本的源碼,比如需要下載的hadoop-3.0.0-alpha2的地址為http://archive.apache.org/dist/hadoop/core/hadoop-3.0.0-alpha2/; 直接下載源碼包:hadoop-3.0.0-alpha2-src.tar.gz
二、安裝依賴環境
hadoop的編譯需要依賴cmake、openssl等相關依賴環境,如果在編譯hadoop之前沒有進行必要環境的安裝的話,可能會出一些異常問題,部分異常解決將博客:[Hadoop] - Cannot run program "cmake"、[Hadoop] - Protocol Buffer安裝; 必要服務列表為:
* Unix System ## Unix類型的操作系統 * JDK 1.8+ ## JDK至少1.8版本 * Maven 3.0 or later ## Maven環境3.x版本以上,最好將maven的源修改為國內源,默認國外源可能連接不上 * Findbugs 1.3.9 (if running findbugs) ## 可選 * ProtocolBuffer 2.5.0 ## 必須,版本不要選擇錯誤了 * CMake 2.6 or newer (if compiling native code), must be 3.0 or newer on Mac ## 進行native編譯過程中必須服務 * Zlib devel (if compiling native code) ## cmake服務需要 * openssl devel (if compiling native hadoop-pipes and to get the best HDFS encryption performance) ## cmake服務需要 * Linux FUSE (Filesystem in Userspace) version 2.6 or above (if compiling fuse_dfs) * Internet connection for first build (to fetch all Maven and Hadoop dependencies) * python (for releasedocs) * bats (for shell code testing) * Node.js / bower / Ember-cli (for YARN UI v2 building)
三、源碼編譯
進行源碼壓縮包解壓,然后進入解壓后的文件夾,執行相關maven命令進行源碼編譯操作
假設解壓后,hadoop源碼位於文件夾:/opt/workspaces/hadoop-3.0.0-alpha2-src中;支持的maven命令如下:
Maven build goals: * Clean : mvn clean [-Preleasedocs] * Compile : mvn compile [-Pnative] * Run tests : mvn test [-Pnative] [-Pshelltest] * Create JAR : mvn package * Run findbugs : mvn compile findbugs:findbugs * Run checkstyle : mvn compile checkstyle:checkstyle * Install JAR in M2 cache : mvn install * Deploy JAR to Maven repo : mvn deploy * Run clover : mvn test -Pclover [-DcloverLicenseLocation=${user.name}/.clover.license] * Run Rat : mvn apache-rat:check * Build javadocs : mvn javadoc:javadoc * Build distribution : mvn package [-Pdist][-Pdocs][-Psrc][-Pnative][-Dtar][-Preleasedocs][-Pyarn-ui] * Change Hadoop version : mvn versions:set -DnewVersion=NEWVERSION
Maven相關參數如下:
Build options: * Use -Pnative to compile/bundle native code ## 進行本地庫代碼編譯 * Use -Pdocs to generate & bundle the documentation in the distribution (using -Pdist) ## 進行幫助文檔編譯 * Use -Psrc to create a project source TAR.GZ ## 將源碼打包到最后編譯好的文件夾中 * Use -Dtar to create a TAR with the distribution (using -Pdist) ## 對編譯好的文件進行打包操作 * Use -Preleasedocs to include the changelog and release docs (requires Internet connectivity) ## 升級文檔編譯 * Use -Pyarn-ui to build YARN UI v2. (Requires Internet connectivity) ## 支持yarn v2的ui
幾個常用的編譯命令:
1. mvn package -Pdist -DskipTests -Dtar -Dmaven.javadoc.skip=true ## 僅編譯正常源碼部分,對於native部分不進行編譯,最終結果打包
2. mvn package -Pdist,native,docs -DskipTests -Dtar ## 編譯正常部分源碼、native依賴庫以及幫助文檔,最終結果打包
執行mvn package -Pdist,native,docs -DskipTests -Dtar命令后,等等一段時間(根據網絡情況而定,一般30分鍾左右能夠完成編譯),完成編譯后,命令行輸出為:
編譯好的文件位於路徑/opt/workspaces/hadoop-3.0.0-alpha2-src/hadoop-dist/target中,即當前目錄的hadoop-dist子目錄的target文件夾中,文件截圖為:
==================================
至此,hadoop3.0編譯完成
編譯環境:
centos6.5 64位 1核2G
JDK 1.8.0_121
Maven 3.3.3
Maven源:aliyun maven源 ==> http://maven.aliyun.com/nexus/content/groups/public/
ProtocolBuffer 2.5.0
Cmake 2.8.12.2