hadoop的lzo插件安装

由于lzo的压缩/解压速度也比较快,合理的压缩率;支持split,是hadoop中最流行的压缩格式;支持hadoop native库;可以在linux系统下安装lzop命令,使用方便。

所以选lzo作为hadoop中hdfs的压缩文件的格式,但是lzo文件需要手动安装,下面介绍Hadoop的lzo插件的安装,以及测试是否安装成功。 

在ambari环境中

1.hadoop-lzo-0.4.20-SNAPSHOT.jar需要放到/usr/hdp/2.2.6.0-2800/hadoop/下

2../libgplcompression.so.0.0.0

./libgplcompression.so.0
./libgplcompression.so
./libgplcompression.la
./libgplcompression.a需要放到/usr/hdp/2.2.6.0-2800/hadoop/lib/native/下

 

注意事项:本安装的软件的根目录都在/data/softwares(自己修改成自己的目录)

一、下载、解压并编译lzo包

[work@mie-bj-bigdata-webservice ~]$ sudo su -

//在编译lzo包的时候,需要一些环境,可以用下面的命令安装好lzo编译环境

[root@mie-bj-bigdata-webservice ~]$ yum -y install  lzo-devel     \

               zlib-devel  gcc autoconf automake libtool

[root@mie-bj-bigdata-webservice ~]$ cd /data/softwares 

[root@mie-bj-bigdata-webservice softwares]$wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz

[root@mie-bj-bigdata-webservice softwares]$ tar -zxvf lzo-2.06.tar.gz

[root@mie-bj-bigdata-webservice softwares]$ cd lzo-2.06

[root@mie-bj-bigdata-webservice softwares]$ export CFLAGS=-m64

[root@mie-bj-bigdata-webservice softwares]$./configure -enable-shared -prefix=/data/softwares/lzo

[root@mie-bj-bigdata-webservice softwares]$ make && make install

//编译完lzo包之后,会在/data/softwares/lzo生成一些文件,目录结构如下:

[root@mie-bj-bigdata-webservice softwares]$ ls -l

total 12

drwxr-xr-x 3root root 4096Mar 2117:23include

drwxr-xr-x 2root root 4096Mar 2117:23lib

drwxr-xr-x 3root root 4096Mar 2117:23share

//将/data/softwares/lzo目录下的所有文件打包,并同步到集群中的所有机器上

二、安装Hadoop-LZO

// 这里下载的是Twitter hadoop-lzo,可以用Maven(如何安装Maven请参照http://www.iteblog.com/archives/775)进行编译

[root@mie-bj-bigdata-webservice softwares]$ wget https://github.com/twitter/hadoop-lzo/archive/master.zip

//下载后的文件名是master,它是一个zip格式的压缩包,可以进行解压:

[root@mie-bj-bigdata-webservice softwares]$ unzip master

//解压后的文件夹名为hadoop-lzo-master,hadoop-lzo-master中的pom.xml依赖了hadoop 2.4.0,由于我们这里用到的是Hadoop 2.6.4,所以建议将hadoop版本修改为2.6.4:

<properties>

     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

     <hadoop.current.version>2.6.4</hadoop.current.version>

     <hadoop.old.version>1.0.4</hadoop.old.version>

</properties>

//然后进入hadoop-lzo-master目录,依次执行下面的命令

[root@mie-bj-bigdata-webservice hadoop-lzo-master]$ export CFLAGS=-m64

[root@mie-bj-bigdata-webservice hadoop-lzo-master]$ export CXXFLAGS=-m64

[root@mie-bj-bigdata-webservice hadoop-lzo-master]$ export C_INCLUDE_PATH=/data/softwares/lzo/include

[root@mie-bj-bigdata-webservice hadoop-lzo-master]$ export LIBRARY_PATH=/data/softwares/lzo/lib

[root@mie-bj-bigdata-webservice hadoop-lzo-master]$ mvn clean package -Dmaven.test.skip=true

[root@mie-bj-bigdata-webservice hadoop-lzo-master]$ tar -cBf - -C target/native/Linux-amd64-64/lib . | tar -xBvf - -C /data/softwares/hadoop/lib/native/

[root@mie-bj-bigdata-webservice hadoop-lzo-master]$ cp target/hadoop-lzo-0.4.20-SNAPSHOT.jar   /data/softwares/hadoop/share/hadoop/common/

//其实在tar -cBf - -C target/native/Linux-amd64-64/lib . | tar -xBvf - -C /data/softwares/hadoop/lib/native/命令之后,会在native目录下生成一下几个文件:

[root@mie-bj-bigdata-webservice native]$ ls -l

-rw-r--r--  1libgplcompression.a

-rw-r--r--  1libgplcompression.la

lrwxrwxrwx  1libgplcompression.so -> libgplcompression.so.0.0.0

lrwxrwxrwx  1libgplcompression.so.0-> libgplcompression.so.0.0.0

-rwxr-xr-x  1libgplcompression.so.0.0.0

//其中libgplcompression.so和libgplcompression.so.0是链接文件,指向libgplcompression.so.0.0.0,将刚刚生成的libgplcompression*和target/hadoop-lzo-0.4.18-SNAPSHOT.jar同步到集群中的所有机器对应的目录。

三、配置Hadoop环境变量

1.在Hadoop中的$HADOOP_HOME/etc/hadoop/hadoop-env.sh加上下面配置:
     export LD_LIBRARY_PATH=/data/softwares/lzo/lib

2.在$HADOOP_HOME/etc/hadoop/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>

3.在$HADOOP_HOME/etc/hadoop/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/lzo/lib</value>

</property>

//将刚刚修改的配置文件全部同步到集群的所有机器上,并重启Hadoop集群,这样就可以在Hadoop中使用lzo。

四、hive如何使用lzo

这里在Hive中使用一下lzo,在hive中创建一个lzo表:

hive> create table lzo(id int,name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'; 

//先用yum install lzop安装linux的lzop打包工具

//然后在本地用lzo压缩一个文件,users.txt的内容的内容为

1     x

2     y

3     z

//将/root目录下面的users.txt压缩为users.txt.lzo

[root@mie-bj-bigdata-webservice ~]$ lzop users.txt

//将users.txt.lzo的数据导入到lzo表里面:

hive>load data local inpath '/root/users.txt.lzo'into table lzo;

//再查询看看lzo格式hive是否能解析

hive> select * from lzo;

//这样,我们就可以在Hive中使用lzo了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值