早期在安裝集群的時候並沒有需求要支持snappy壓縮,所以只能后面將snappy壓縮配置上去
找了很多資料,在配置hadoop支持snappy壓縮的時候講得比較簡略,我照着配置一直都是snappy:false。網上找了一圈也沒有找到一份比較詳細的完整資料,沒辦法,只能硬剛了,好在最終配置成功了,在這寫下來爭取可以幫到更多的B站上找資料學習的童鞋。
服務器信息:CentOS 7.4、hadoop 2.7.2
工作目錄:/opt/module
安裝包:hadoop-2.7.2.tar.gz、hadoop-2.7.2-src.tar.gz、snappy-1.1.3.tar.gz、protobuf-2.5.0.tar.gz、jdk1.8、maven(阿里雲鏡像倉庫)
異常信息:
**[emo@hadoop102 module]$ hadoop checknative**
**20/08/03 01:15:24 WARN bzip2.Bzip2Factory: Failed to load/initialize native-bzip2 library system-native, will use pure-Java version**
**20/08/03 01:15:24 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library**
**Native library checking:**
**hadoop: true /opt/module/hadoop-2.7.2/lib/native/libhadoop.so.1.0.0**
**zlib: true /lib64/libz.so.1**
**snappy: false**
**lz4: true revision:99**
**bzip2: false**
**openssl: true /lib64/libcrypto.so**
建議先執行一下該命令:
yum -y install gcc-c++ build-essential autoconf automake libtool cmake zlib1g-dev pkg-config libssl-devua svn openssl-devel ncurses-devel
1、snappy的安裝(三部曲:解壓、configure、make && make install):
wget https://src.fedoraproject.org/repo/pkgs/snappy/snappy-1.1.3.tar.gz/
tar /opt/software/snappy-1.1.3.tar.gz -C /opt/module/
cd /opt/module/snappy-1.1.3
./configure (默認安裝到:/usr/local/lib,可以執行路徑: --prefix=/opt/module/)
make && make install
2、protobuf的安裝很easy:
wget http://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz
tar -zxvf protobuf-2.5.0.tar.gz
cd protobuf-2.5.0
configure
make && make install
默認安裝目錄:/usr/local/lib,當然可以自己改哈,在configure的時候執行安裝路徑即可,我是采用的默認安裝
3、解壓源碼包(hadoop-2.7.2-src.tar.gz)、安裝
tar -zxf /opt/software/hadoop-2.7.2-src.tar.gz -C /opt/module/
cd /opt/module/hadoop-2.7.2-src
執行編譯(需要很長時間,提前配置好maven環境):
mvn package -Pdist,native -DskipTests -Dtar -Drequire.snappy
ps:maven打包編譯大家應該都了解,知道看到一片綠,然后出來了一行: Build Success,然后會自動停止
4、native下面的包文件copy:
cd /opt/module/hadoop-2.7.2-src/hadoop-dist/target/hadoop-2.7.2/lib/native
將源碼包這里面編譯過的動態庫文件全部copy到hadoop集群的native下做替換(ps:我的hadoop集群的工作目錄:/opt/module/hadoop-2.7.2/):
copy hadoop的包文件(8個):
\cp -f /opt/module/hadoop-2.7.2-src/hadoop-dist/target/hadoop-2.7.2/lib/native /opt/module/hadoop-2.7.2/lib/native/
copy snappy的動態包文件(5個):
\cp /usr/local/lib/libsnappy* /opt/module/hadoop-2.7.2/lib/native/
總共13個文件copy完畢,記得修改文件為hadoop的用戶和組,不要在/opt/module/hadoop-2.7.2/lib/native/下面copy過去的包還是root用戶和組:
參考命令:
chown -R hadoop:hadoop /opt/module/hadoop-2.7.2/lib/native
如果是集群的話,記得將/opt/module/hadoop-2.7.2/lib/native同步copy到其他服務器上。
再次啟動集群,執行:hadoop checknative,就可以看到:
snappy: true /opt/module/hadoop-2.7.2/lib/native/libsnappy.so.1
大功告成!!!!