對hadoop原始碼進行編譯
阿新 • • 發佈:2018-12-17
hadoop編譯
前期準備
軟體需要
- 部署JAVA環境
- 安裝maven
- 安裝Protocol Buffer 2.5.0
- 安裝Findbugs(可選)
軟體安裝
安裝maven
- 下載解壓maven的安裝包
[[email protected] software]$ pwd /home/hadoop/software [
[email protected] software]$ wget https://archive.apache.org/dist/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz [[email protected] software]$ tar -xzvf apache-maven-3.3.3-bin.tar.gz -C /home/hadoop/app/ 備註:開始用maven的tar.gz型別壓縮包的時候,一直有點小問題,後來重新下載了maven的zip型別的壓縮包,問題突然解決了,我也不太清楚和壓縮型別是否有關聯,也可能是操作不慎,小夥伴可以留意一下
- 配置全域性環境變數
[[email protected] software]$ exit
[[email protected] ~]$ vi /etc/profile
export MAVEN_HOME=/home/hadoop/app/apache-maven-3.3.3
export PATH=$MAVEN_HOME/bin:$PATH
[[email protected] ~]$ source /etc/profile
[[email protected] ~]$ mvn -version (驗證生效)
安裝ProtocolBuffer 2.5.0
- 下載解壓protobuf-2.5.0
[[email protected] software]$ rz (官網下載的版本里面缺少東西,比如後面configure這個資料夾就沒有,所以從其他地方找的壓縮包上傳的)
[[email protected] software]$ tar -xzvf protobuf-2.5.0.tar.gz -C /home/hadoop/app/
- 對protobuf-2.5.0進行編譯
[[email protected] ~]# yum install -y gcc gcc-c++ make cmake
[[email protected] ~]# yum install -y autoconf automake libtool curl make g++ unzip
[[email protected] software]$ cd ../app/protobuf-2.5.0
[[email protected] protobuf-2.5.0]$ ./configure --prefix=/home/hadoop/app/protobuf(指定編譯之後的安裝路徑,目錄不需要自己去建立,編譯過程中會自動建立)
[[email protected] protobuf-2.5.0]$ make && make install (進行安裝)
安裝完之後:
[[email protected] app]$ ll -d protobuf/
drwxrwxr-x. 5 hadoop hadoop 4096 Nov 30 19:06 protobuf/ (已經自動新建了一個資料夾)
- 配置全域性環境變數
[[email protected] ~]# vi /etc/profile
export PROTOC_HOME=/home/hadoop/app/protobuf
export PATH=$PROTOC_HOME/bin:$PATH
[[email protected] ~]# source /etc/profile
[[email protected] ~]# protoc --version
libprotoc 2.5.0 (安裝成功)
安裝其他依賴包
- 為了支援native,我們需要手動去安裝支援這些壓縮的本地庫
[[email protected] ~]# yum install -y openssl openssl-devel svn ncurses-devel zlib-devel libtool
[[email protected] ~]# yum install -y snappy snappy-devel bzip2 bzip2-devel lzo lzo-devel lzop autoconf automake
保險起見,再次執行下面的語句,確保都已經下載好了包
[[email protected] ~]# yum install -y snappy snappy-devel bzip2 bzip2-devel lzo lzo-devel lzop autoconf automake
對hadoop進行編譯
- 因為我之前已經安裝好了hadoop-2.6.0-cdh5.7.0這個版本,所以裡面已經安裝好了相關的hive sqoop等軟體,不想再重新安裝一次,我就採用了另一種方法。對hadoop-2.7.4-src.tar.gz 這個版本進行原始碼編譯,編譯完成之後把它的下面的native cp(在當前機器編譯)或者scp(在另一臺機器編譯)到hadoop-2.6.0-cdh5.7.0這個版本下面的lib下面,取代其native。這樣也是有效,選擇2.7.4這個版本的原因是因為官方文件中推薦的穩定版本就是這個,所以考慮到其不會出現軟體相容性的問題,當然我覺得也可以就用cdh的這個src的壓縮包編譯也是可以,不過本人沒試,好奇的小夥伴可以自行嘗試。操作步驟如下:
[[email protected] hadoop-2.7.4-src]# pwd (進去到src解壓後的檔案裡去進行mav的編譯)
/opt/hadoop-2.7.4-src
[[email protected] hadoop-2.7.4-src]# mvn clean package -Pdist,native -DskipTests -Dtar(一開始使用這個命令一直報錯)
[[email protected] hadoop-2.7.4-src]# mvn clean package -DskipTests -Pdist,native -Dtar -Dsnappy.lib=/opt/ -Dbundle.snappy (後來通過檢視部落格把命令改為這樣,執行成功)
執行成功後,hadoop-2.7.4-src家目錄下面的hadoop-dist/target/hadoop-2.6.5.tar.gz即為新生成的二進位制安裝包,hadoop-dist/target/hadoop-2.6.5 下面有一個lib/native/,把這個native scp到hadoop001這臺機器上,發現hadoop001這臺機器的cdh版本就有了壓縮格式啦
[[email protected] hadoop-2.7.4-src]# scp -r native 192.168.2.65:/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/lib/
之後記得要修改native的使用者使用者組為hadoop
驗證:
[[email protected] hadoop-2.6.0-cdh5.7.0]$ hdfs dfs -ls / (日誌已經沒有了警告標示)
[[email protected] hadoop-2.6.0-cdh5.7.0]$ hadoop checknative
18/12/01 13:37:36 INFO bzip2.Bzip2Factory: Successfully loaded & initialized native-bzip2 library system-native
Native library checking:
hadoop: true /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/lib/native/libhadoop.so
zlib: true /lib64/libz.so.1
snappy: true /usr/lib64/libsnappy.so.1
lz4: true revision:99
bzip2: true /lib64/libbz2.so.1
openssl: true /usr/lib64/libcrypto.so
至此發現編譯當前機器的cdh版本已經支援了壓縮格式,搞定~