分享

开启hadoop和Hbase集群的lzo压缩功能

hyj 2014-7-6 10:36:13 发表于 实操演练 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 2 35524
本帖最后由 nettman 于 2014-7-9 17:48 编辑
问题导读:
1.如何启动hadoop、hbase集群的压缩功能?
2.lzo的作用是什么?
3.hadoop配置文件需要做哪些修改?






首先我们明白一个概念:
LZO 是致力于解压速度的一种数据压缩算法,LZO 是 Lempel-Ziv-Oberhumer 的缩写。

安装前:
# yum -y install  lzo-devel zlib-devel  gcc autoconf automakelibtool

1.(all) 在集群的所有节点上安装Lzo库,
tar -zxvf lzo-2.06.tar.gz
cd lzo-2.06
# export CFLAGS=-m64
#./configure --enable-shared
# make
# make install


库文件被默认安装到了/usr/local/lib,我们需要进一步指定lzo库文件的路径,两个方法都可以:
1)      拷贝/usr/local/lib目录下的lzo库文件到/usr/lib(32位平台),或/usr/lib64(64位平台)
  1. #cp /usr/local/lib/liblzo2.* /usr/lib64
复制代码

2)在/etc/ld.so.conf.d/目录下新建lzo.conf文件,写入lzo库文件的路径,然后运行/sbin/ldconfig -v,使配置生效

  1. #vi /etc/ld.so.conf.d/lzo.conf
  2.   /usr/local/lib
  3. # /sbin/ldconfig -v
复制代码





2. 编译安装Hadoop Lzo本地库以及Jar包,这里采用twitter维护的,从这里下载
https://github.com/twitter/hadoop-lzo
修改pom.xml:
  1. <properties>
  2.     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  3.     <hadoop.current.version>2.1.0-beta</hadoop.current.version>
  4.     <hadoop.old.version>1.0.4</hadoop.old.version>
  5.   </properties>
复制代码



修改为
  1. <properties>
  2.     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  3.     <hadoop.current.version>2.2.0</hadoop.current.version>
  4.     <hadoop.old.version>1.0.4</hadoop.old.version>
  5.   </properties>
复制代码




hadoop-lzo-master.zip
  1. cd hadoop-lzo-master
  2. export CFLAGS=-m64
  3. export CXXFLAGS=-m64
  4. export C_INCLUDE_PATH=/usr/local/include/lzo
  5. export LIBRARY_PATH=/usr/local/lib
  6. mvn clean package -Dmaven.test.skip=true
复制代码



接着把target/native/Linux-amd64-64/lib下的全部文件拷贝到${HADOOP_HOME}/lib/native,或者
  1. cp /build/native/Linux-amd64-64/lib/*  $HADOOP_HOME/lib/native/
  2. cp target/hadoop-lzo-0.4.20-SNAPSHOT.jar /opt/hadoop-2.2.0/share/hadoop/common/lib
复制代码



对于Hbase启用LZO
  1. cp $HADOOP_HOME/lib/native/Linux-amd64-64/* $HBASE_HOME/lib/native/Linux-amd64-64
复制代码


修改:
hbase-env.sh
  1. exportHBASE_LIBRARY_PATH=$HBASE_LIBRARY_PATH:$HBASE_HOME/lib/native/Linux-amd64-64/:/usr/local/lib/
复制代码

同步hadoop 和hbase集群


3.配置文件修改
hadoop-env.sh中加入
  1. export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native
复制代码



core-site.xml
  1. <!-- 配置 Hadoop压缩包 -->
  2. <property>
  3. <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>
  4. </property>
  5. <property>  
  6.        <name>io.compression.codec.lzo.class</name>  
  7.         <value>com.hadoop.compression.lzo.LzoCodec</value>  
  8. </property>
复制代码




mapred-site.xml
  1. <property>
  2.         <name>mapred.compress.map.output</name>
  3.         <value>true</value>
  4. </property>
  5. <property>      
  6.         <name>mapred.map.output.compression.codec</name>        
  7.         <value>com.hadoop.compression.lzo.LzoCodec</value>      
  8. </property>  
  9. <property>
  10.          <name>mapred.child.env</name>  
  11.          <value>LD_LIBRARY_PATH=/usr/local/lib</value>  
  12. </property>
复制代码



同步hadoop-env.sh,core-site.xml, mapred-site.xml到集群&#8203;
4.  安装lzop
LZOP是使用lzo库写的一个程序,通过shell命令直接可以压缩、解压缩文件。
  1. tar zxvf lzop-1.03.tar.gz
  2. cd
  3. #  exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
  4. # ./configure
  5. #  make
  6. #  makeinstall
复制代码



用一下lzop的压缩解压功能,成功安装后可直接使用lzop命令对文件进行解压缩操作了。
# 压缩
  1. [hadoop@master1 ~]$ lzop -v test1.txt
  2. compressing test1.txt into test1.txt.lzo
复制代码





#上传到hdfs
  1. [hadoop@master1 ~]$ hadoop fs -put *.lzo /in
复制代码



#给Lzo文件建立Index
  1.    hadoop jar/opt/hadoop-2.2.0/share/hadoop/common/lib/hadoop-lzo-0.4.20-SNAPSHOT.jarcom.hadoop.compression.lzo.LzoIndexer   /in
复制代码



#运行一个wordcount程序
  1. hadoop jar /home/hadoop/wordcount.jar   org.apache.hadoop.examples.WordCount  /input1 /out1
复制代码



正常:
14/02/23 18:53:14 INFOlzo.GPLNativeCodeLoader: Loaded native gpl library from the embedded binaries
14/02/23 18:53:14 INFO lzo.LzoCodec:Successfully loaded & initialized native-lzo library [hadoop-lzo rev478aa845e11bbbeeb9b8326e733cd20a06d2cb3a]





已有(2)人评论

跳转到指定楼层
ohano_javaee 发表于 2014-10-15 18:16:52
好文回去试试
回复

使用道具 举报

tang 发表于 2015-6-10 20:43:42
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条