1. 程式人生 > 實用技巧 >Hadoop【LZO壓縮配置】

Hadoop【LZO壓縮配置】

目錄

一.編譯

hadoop本身並不支援lzo壓縮,故需要使用twitter提供的hadoop-lzo開源元件。hadoop-lzo需依賴hadoop和lzo進行編譯,編譯步驟如下。

0. 環境準備
maven(下載安裝,配置環境變數,修改sitting.xml加阿里雲映象)
gcc-c++
zlib-devel
autoconf
automake
libtool
通過yum安裝即可,yum -y install gcc-c++ lzo-devel zlib-devel autoconf automake libtool

1. 下載、安裝並編譯LZO
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz
tar -zxvf lzo-2.10.tar.gz
cd lzo-2.10
./configure -prefix=/usr/local/hadoop/lzo/
make
make install

2. 編譯hadoop-lzo原始碼

2.1 下載hadoop-lzo的原始碼,下載地址:https://github.com/twitter/hadoop-lzo/archive/master.zip
2.2 解壓之後,修改pom.xml
    <hadoop.current.version>3.1.3</hadoop.current.version>
2.3 宣告兩個臨時環境變數
     export C_INCLUDE_PATH=/usr/local/hadoop/lzo/include
     export LIBRARY_PATH=/usr/local/hadoop/lzo/lib 
2.4 編譯
    進入hadoop-lzo-master,執行maven編譯命令
    mvn package -Dmaven.test.skip=true
2.5 進入target,hadoop-lzo-0.4.21-SNAPSHOT.jar 即編譯成功的hadoop-lzo元件

二.相關配置

1)將編譯好後的hadoop-lzo-0.4.20.jar 放入hadoop-3.1.3/share/hadoop/common/

[hadoop@hadoop102 common]$ pwd
/opt/module/hadoop-3.1.3/share/hadoop/common
[hadoop@hadoop102 common]$ ls
hadoop-lzo-0.4.20.jar

2)同步hadoop-lzo-0.4.20.jar到hadoop103、hadoop104節點

xsync hadoop-lzo-0.4.20.jar

3)core-site.xml增加配置支援LZO壓縮

<configuration>
    <property>
        <name>io.compression.codecs</name>
        <value>
            org.apache.hadoop.io.compress.GzipCodec,
            org.apache.hadoop.io.compress.DefaultCodec,
            org.apache.hadoop.io.compress.BZip2Codec,
            org.apache.hadoop.io.compress.SnappyCodec,
            com.hadoop.compression.lzo.LzoCodec,
            com.hadoop.compression.lzo.LzopCodec
        </value>
    </property>

    <property>
        <name>io.compression.codec.lzo.class</name>
        <value>com.hadoop.compression.lzo.LzoCodec</value>
    </property>
</configuration>

4)同步core-site.xml到hadoop103、hadoop104

xsync core-site.xml

5)重啟叢集,後mr和hive可以使用LZO壓縮。

三.為LZO檔案建立索引

預設的.lzo壓縮檔案是不可以進行分片的,計算只能1個MapReduce程式,可以給.lzo檔案建立索引,後續該.lzo檔案可以進行分片。

如:為big_file.lzo檔案建立索引

// haodoop jar 編譯好的jar包  全類名  .lzo檔案
hadoop jar /path/to/your/hadoop-lzo.jar com.hadoop.compression.lzo.DistributedLzoIndexer big_file.lzo