• 一、下载、安装、编译lzo
  • 二、修改Hadoop配置
  • 三、安装、编译hadoop-lzo-master
  • 四、检测是否配置成功
  • 1、hive方法
  • 2、job日志方法
  • 五、参考链接


LZO(LZO是Lempel-Ziv-Oberhumer的缩写)是一种高压缩比和解压速度极快的编码,它的特点是解压缩速度非常快,无损压缩,压缩后的数据能准确还原,lzo是基于block分块的,允许数据被分解成chunk,能够被并行的解压

一、下载、安装、编译lzo

下载

[root@namenode local]#wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz

解压

[root@namenode local]#tar -zxvf lzo-2.06.tar.gz

进入目录

[root@namenode local]#cd lzo-2.06

在lzo目录下执行

[root@namenode lzo-2.06]#export CFLAGS=-m64
[root@namenode lzo-2.06]#./configure -enable-shared -prefix=/usr/local/hadoop-2.9.1/lzo/
[root@namenode lzo-2.06]#make && sudo make install

以上命令正确执行后会在/usr/local/hadoop-2.9.1/lzo/目录下生成一些文件

hadoop lzo是 hadoop lzo是什么_hadoop


这里要注意的是:把这个目录压缩,并同步到其他子节点到对应位置

[root@namenode hadoop-2.9.1]#tar zcvf lzo.tar.gz lzo/

为了接下来的编译方便,需要安装几个插件

[root@namenode ~]#yum -y install lzo-devel zlib-devel gcc autoconf automake libtool

二、修改Hadoop配置

进入配置文件目录

[root@namenode hadoop-2.9.1]# cd etc/hadoop/

编辑 hadoop-env.sh 文件

vim hadoop-env.sh
export LD_LIBRARY_PATH=/usr/local/hadoop-2.9.1/lzo/lib

编辑 core-site.xml 文件

vim core-site.xml
<property>
        <name>io.compression.codecs</name>
        <value>org.apache.hadoop.io.compress.GzipCodec,
               org.apache.hadoop.io.compress.DefaultCodec,
               com.hadoop.compression.lzo.LzoCodec,
               com.hadoop.compression.lzo.LzopCodec,
               org.apache.hadoop.io.compress.BZip2Codec
        </value>
</property>

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

编辑 mapred-site.xml 文件

vim mapred-site.xml
<property>
        <name>mapred.compress.map.output</name>
        <value>true</value>
</property>

<property>
        <name>mapred.map.output.compression.codec</name>
        <value>com.hadoop.compression.lzo.LzoCodec</value>
</property>

<property>
        <name>mapred.child.env</name>
        <value>LD_LIBRARY_PATH=/usr/local/hadoop-2.9.1/lzo/lib</value>
</property>

这一步要注意的是:这三个修改后的文件同样要同步到其他子节点相应到位置

到这里我就急着开始测试了,测试方法是使用hive建表,结果…

hadoop lzo是 hadoop lzo是什么_hadoop lzo是_02

其实原因是还缺少重要一步没有做

三、安装、编译hadoop-lzo-master

下载hadoop-lzo

[root@namenode ~]#wget https://github.com/twitter/hadoop-lzo/archive/master.zip

解压文件

[root@namenode ~]#unzip master.zip

进入目录

[root@namenode ~]# cd hadoop-lzo-master/

编辑pom.xml中的hadoop版本号跟集群中使用的版本号一致

<hadoop.current.version>2.9.1</hadoop.current.version>

由于这是一个maven项目,所以需要让linux支持mvn命令

[root@namenode local]# wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz

解压

[root@namenode local]# tar -zxvf apache-maven-3.5.4-bin.tar.gz

修改环境变量 /etc/profile

MAVEN_HOME=/usr/local/apache-maven-3.5.4
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin

然后使其生效

[root@namenode hadoop-lzo-master]]#source /etc/profile

接下来执行一连串命令

[root@namenode hadoop-lzo-master]# export CFLAGS=-m64
[root@namenode hadoop-lzo-master]# export CXXFLAGS=-m64
[root@namenode hadoop-lzo-master]# export C_INCLUDE_PATH=/usr/local/hadoop-2.9.1/lzo/include
[root@namenode hadoop-lzo-master]# export LIBRARY_PATH=/usr/local/hadoop-2.9.1/lzo/lib
[root@namenode hadoop-lzo-master]# mvn clean package -Dmaven.test.skip=true

mvn操作比较耗时,23分钟

hadoop lzo是 hadoop lzo是什么_hadoop lzo是_03

然后继续执行一堆命令

[root@namenode hadoop-lzo-master]# cd target/native/Linux-amd64-64/
[root@namenode Linux-amd64-64]# tar -cBf - -C lib . | tar -xBvf - -C ~

上面的命令执行完毕后,会在用户主目录~下生成几个文件

hadoop lzo是 hadoop lzo是什么_hadoop_04

然后到~目录下,把这几个文件复制到hadoop/lib/native目录下

[root@namenode ~]# cp ~/libgplcompression* $HADOOP_HOME/lib/native/

同时复制package生成到jar包到指定目录

[root@namenode hadoop-lzo-master]# cp target/hadoop-lzo-0.4.21-SNAPSHOT.jar $HADOOP_HOME/share/hadoop/common/

这一步要注意的是,以上两个cp复制的操作的文件同时要同步到其他子节点到相应位置

四、检测是否配置成功

1、hive方法

create table lzo(id int,name string)
    STORED AS INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat' 
    OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat';

执行结果:成功

hadoop lzo是 hadoop lzo是什么_lzo_05

2、job日志方法

执行一个wordcount

hadoop jar /usr/local/hadoop-2.9.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.1.jar wordcount /input/1.txt /output/

执行结果:成功

hadoop lzo是 hadoop lzo是什么_lzo_06

五、参考链接

Hadoop 2.x安装和配置lzo