MR-Job中使用lzop详见MR案例:Job中使用Lzo压缩
1). 配置前的环境准备
# yum -y install lzo-devel zlib-devel gcc autoconf automakelibtool
2). (all) 在集群的所有节点上安装Lzo库
下载、解压,然后编译。并将/usr/local/hadoop/lzo-2.06目录下的所有文件打包,并同步到集群中的所有机器上。相关命令:
# tar -zxvf lzo-2.06.tar.gz # cd lzo-2.06 # export CFLAGS=-m64 # ./configure --enable-shared # make # make install
3). Lzo库文件被默认安装到了/usr/local/lib,我们需要进一步指定lzo库文件的路径。两个方法:
3.1. 拷贝/usr/local/lib目录下的lzo库文件到/usr/lib(32位平台),或/usr/lib64(64位平台)
#cp /usr/local/lib/liblzo2.* /usr/lib64
3.2. 在/etc/ld.so.conf.d/目录下新建lzo.conf文件,写入lzo库文件的路径,然后运行/sbin/ldconfig -v,使配置生效
#vi /etc/ld.so.conf.d/lzo.conf /usr/local/lib # /sbin/ldconfig -v
4). 编译安装Hadoop Lzo本地库以及Jar包
采用twitter的下载地址,解压文件
unzip hadoop-lzo-master.zip
4.1.修改 pom.xml 文件,即hadoop的当前版本
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <hadoop.current.version>2.2.0</hadoop.current.version> <hadoop.old.version>1.0.4</hadoop.old.version> </properties>
4.2.hadoop-lzo-master.zip文件相关操作
cd hadoop-lzo-master export CFLAGS=-m64 export CXXFLAGS=-m64 export C_INCLUDE_PATH=/usr/local/include/lzo export LIBRARY_PATH=/usr/local/lib
//预先安装好maven mvn clean package -Dmaven.test.skip=true
4.3.把target/native/Linux-amd64-64/lib下的全部文件拷贝到${HADOOP_HOME}/lib/native
[root@ncst target]# cd native/Linux-amd64-64
[root@ncst Linux-amd64-64]# tar -cBf - -C lib . | tar -xBvf - -C ~
[root@ncst ~]# cp ~/libgplcompression* $HADOOP_HOME/lib/native/
4.4.然后拷贝JAR包
cp hadoop-lzo-master
/target/hadoop-lzo-0.4.20-SNAPSHOT.jar /opt/hadoop-2.2.0/share/hadoop/common/lib
5). 对于Hbase启用Lzo
cp $HADOOP_HOME/lib/native/Linux-amd64-64/* $HBASE_HOME/lib/native/Linux-amd64-64
5.1.修改:hbase-env.sh
exportHBASE_LIBRARY_PATH=$HBASE_LIBRARY_PATH:$HBASE_HOME/lib/native/Linux-amd64-64/:/usr/local/lib/
6). 修改配置文件
6.1.在hadoop-env.sh中加入
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native
6.2.在core-site.xml
<!-- 配置 Hadoop压缩包 --> <property> <name>io.compression.codecs</name> <value>org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.BZip2Codec,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>
6.3.在mapred-site.xml
<property> <name>mapreduce.map.output.compress</name> <value>true</value> </property> <property> <name>mapreduce.map.output.compress.codec</name> <value>com.hadoop.compression.lzo.LzoCodec</value> </property> <property> <name>mapred.child.env</name> <value>LD_LIBRARY_PATH=/usr/local/lib</value> </property>
7). 安装lzop
Lzop是使用lzo库写的一个程序,通过shell命令直接可以压缩、解压缩文件。下载地址
tar zxvf lzop-1.03.tar.gz cd lzop-1.03 # exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib # ./configure # make # makeinstall