Hadoop学习笔记之lzo文件格式

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/目录下生成一些文件
这里写图片描述
这里要注意的是:把这个目录压缩,并同步到其他子节点到对应位置

[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-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分钟
这里写图片描述

然后继续执行一堆命令

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

上面的命令执行完毕后,会在用户主目录~下生成几个文件
这里写图片描述

然后到~目录下,把这几个文件复制到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';

执行结果:成功
这里写图片描述

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 2.x安装和配置lzo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值