hadoop 2.7支持snappy壓縮配置


早期在安裝集群的時候並沒有需求要支持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

大功告成!!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM