Hadoop【LZO壓縮配置】
阿新 • • 發佈:2020-07-13
目錄
一.編譯
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