hadoop-3.1.2 源碼編譯記錄
注: 之前嘗試過win環境的編譯,但是需要安裝的項太多太麻煩,所以換成linux編譯,方便快捷
HOME=/home/compile/software
windows編譯的請轉 https://blog.csdn.net/miracle_8/article/details/105198399
1. 前期依賴項: BUILDING.txt
* Unix System
* JDK 1.8
* Maven 3.3 or later
* ProtocolBuffer 2.5.0
* CMake 3.1 or newer (if compiling native code)
* Zlib devel (if compiling native code)
* openssl devel (if compiling native hadoop-pipes and to get the best HDFS encryption performance)
* 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): 不需要管
依賴項調整配置
1. maven: 需要重新配置倉庫地址 $HOME/apache-maven-3.6.3/conf
settings.xml: 需要配置成可用的倉庫地址
2. ProtocolBuffer:
下載的是源碼 需要編譯 執行步驟: ./configure --prefix=$HOME/protobuf-bin => make && make install => 驗證$HOME/protobuf-bin目錄下是否存在文件
需要將安裝後的目錄加入到環境變量中, 統一建下圖
3. CMake:
下載的是編譯後的文件, 直接加入到環境變量中即可
4. Zlib/Zlib devel:
下載的是源碼 需要編譯 執行步驟: ./configure --prefix=$HOME/zlib-bin => make && make install => 驗證$HOME/zlib-bin目錄下是否存在文件
需要將安裝後的目錄加入到環境變量中, 統一建下圖
5. openssl devel: -1.1.1e
下載的是源碼 需要編譯 執行步驟: ./config --prefix=$HOME/openssl-bin => make && make install => 驗證$HOME/openssl-bin目錄下是否存在文件
需要將安裝後的目錄加入到環境變量中, 統一建下圖
步驟: vim ~/.bashrc => source ~/.bashrc
export JAVA_HOME=$HOME/jdk
export MAVEN_HOME=$HOME/maven
export CMAKE_HOME=$HOME/cmake
export PROTOBUF_HOME=$HOME/protobuf
export ZLIB_HOME=$HOME/zlib-bin
export OPENSSL_HOME=$HOME/openssl-bin
PATH=$OPENSSL_HOME:$ZLIB_HOME:$CMAKE_HOME/bin:$PROTOBUF_HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH
export PKG_CONFIG_PATH=$HOME/protobuf/lib/pkgconfig/
步驟: vim /etc/ld.so.conf => ldconfig => ldconfig -p(驗證)
include ld.so.conf.d/*.conf
/home/compile/software/protobuf/lib/
/home/compile/software/zlib-bin/lib
/usr/lib64
2. 安裝命令
依賴安裝之後 進入hadoop的初級目錄 執行命令: **mvn clean compile package -Pdist,native -DskipTests -Dtar -Dmaven.javadoc.skip=true**
安裝過程基本應該沒有問題 除非是依賴項沒有安裝正確
編譯結束後所有的內容都在 $HOME/hadoop-dist/target 目錄下
編譯過程中出現的問題:
- 提示pthreads查找不到: 最終是因爲zlib或openssl採用了默認的,需要卸載之前的並重新安裝新的依賴, 提示的錯誤內容基本都是CMake報錯,可以稍微瞭解一下cmake原理
yum remove openssl yum remove zlib
可能有用的參考文檔
https://www.cnblogs.com/cynchanpin/p/7236687.html
https://blog.csdn.net/youresshui/article/details/46891599
https://centos.pkgs.org/7/centos-x86_64/zlib-devel-1.2.7-18.el7.x86_64.rpm.html
https://blog.csdn.net/weixin_34248849/article/details/90283435