【转】hadoop2.6 配置lzo压缩
【转自】http://my.oschina.net/u/1169079/blog/225070
经常用于处理大量的数据,如果期间的输出数据、中间数据能压缩存储,对系统的I/O性能会有提升。综合考虑压缩、解压速度、是否支持split,目前lzo是最好的选择。LZO(LZO是Lempel-Ziv-Oberhumer的缩写)是一种高压缩比和解压速度极快的编码,它的特点是解压缩速度非常快,无损压缩,压缩后的数据能准确还原,lzo是基于block分块的,允许数据被分解成chunk,能够被并行的解压。LZO库实现了许多有下述特点的算法:
(1)、解压简单,速度非常快。
(2)、解压不需要内存。
(3)、压缩相当地快。
(4)、压缩需要64 kB的内存。
(5)、允许在压缩部分以损失压缩速度为代价提高压缩率,解压速度不会降低。
(6)、包括生成预先压缩数据的压缩级别,这样可以得到相当有竞争力的压缩比。
(7)、另外还有一个只需要8 kB内存的压缩级别。
(8)、算法是线程安全的。
(9)、算法是无损的。
本文针对Hadoop 2.2.0,介绍如何安装和使用lzo。
一、下载、解压并编译lzo包
1
|
[wyp @master ~]$ wget http: //www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz
|
2
|
[wyp @master ~]$ tar -zxvf lzo- 2.06 .tar.gz
|
3
|
[wyp @master ~]$ cd lzo- 2.06
|
4
|
[wyp @master ~]$ export CFLAGS=-m64
|
5
|
[wyp @master ~]$ ./configure -enable-shared -prefix=/usr/local/hadoop/lzo/
|
6
|
[wyp @master ~]$ make && sudo make install
|
编译完lzo包之后,会在/usr/local/hadoop/lzo/生成一些文件,目录结构如下:
1
|
[wyp @master /usr/local/hadoop/lzo]$ ls -l
|
2
|
total 12
|
3
|
drwxr-xr-x 3 root root 4096 Mar 21 17 : 23 include
|
4
|
drwxr-xr-x 2 root root 4096 Mar 21 17 : 23 lib
|
5
|
drwxr-xr-x 3 root root 4096 Mar 21 17 : 23 share
|
将/usr/local/hadoop/lzo目录下的所有文件打包,并同步到集群中的所有机器上。
1
|
[wyp @master ~]$ yum -y install lzo-devel \
|
2
|
zlib-devel gcc autoconf automake libtool
|
二、安装Hadoop-LZO
这里下载的是Twitter hadoop-lzo,可以用Maven(如何安装Maven请参照本博客的《Linux命令行下安装Maven与配置》)进行编译。
1
|
[wyp @master ~]$ wget https: //github.com/twitter/hadoop-lzo/archive/master.zip
|
下载后的文件名是master,它是一个zip格式的压缩包,可以进行解压:
1
|
[wyp @master ~]$ unzip master
|
解压后的文件夹名为hadoop-lzo-master
1
|
[wyp @master ~]$ git clone https: //github.com/twitter/hadoop-lzo.git
|
hadoop-lzo中的pom.xml依赖了hadoop2.1.0-beta,由于我们这里用到的是Hadoop 2.2.0,所以建议将hadoop版本修改为2.2.0:
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目录,依次执行下面的命令
01
|
[wyp @master hadoop-lzo-master]$ export CFLAGS=-m64
|
02
|
[wyp @master hadoop-lzo-master]$ export CXXFLAGS=-m64
|
03
|
[wyp @master hadoop-lzo-master]$ export C_INCLUDE_PATH= \
|
04
|
/usr/local/hadoop/lzo/include
|
05
|
[wyp @master hadoop-lzo-master]$ export LIBRARY_PATH=/usr/local/hadoop/lzo/lib
|
06
|
[wyp @master hadoop-lzo-master]$ mvn clean package -Dmaven.test.skip= true
|
07
|
[wyp @master hadoop-lzo-master]$ cd target/ native /Linux-amd64- 64
|
08
|
[wyp @master Linux-amd64- 64 ]$ tar -cBf - -C lib . | tar -xBvf - -C ~
|
09
|
[wyp @master ~]$cp ~/libgplcompression* $HADOOP_HOME/lib/ native /
|
10
|
[wyp @master hadoop-lzo-master]$cp target/hadoop-lzo- 0.4 . 18 -SNAPSHOT.jar \
|
11
|
$HADOOP_HOME/share/hadoop/common/
|
其实在tar -cBf – -C lib . | tar -xBvf – -C ~命令之后,会在~目录下生成一下几个文件:
1
|
[wyp @master ~]$ ls -l
|
2
|
-rw-r--r-- 1 libgplcompression.a
|
3
|
-rw-r--r-- 1 libgplcompression.la
|
4
|
lrwxrwxrwx 1 libgplcompression.so -> libgplcompression.so. 0.0 . 0
|
5
|
lrwxrwxrwx 1 libgplcompression.so. 0 -> libgplcompression.so. 0.0 . 0
|
6
|
-rwxr-xr-x 1 libgplcompression.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加上下面配置:
1
|
export LD_LIBRARY_PATH=/usr/local/hadoop/lzo/lib
|
2、在$HADOOP_HOME/etc/hadoop/core-site.xml加上如下配置:
01
|
<property>
|
02
|
<name>io.compression.codecs</name>
|
03
|
<value>org.apache.hadoop.io.compress.GzipCodec,
|
04
|
org.apache.hadoop.io.compress.DefaultCodec,
|
05
|
com.hadoop.compression.lzo.LzoCodec,
|
06
|
com.hadoop.compression.lzo.LzopCodec,
|
07
|
org.apache.hadoop.io.compress.BZip2Codec
|
08
|
</value>
|
09
|
</property>
|
10
|
11
|
<property>
|
12
|
<name>io.compression.codec.lzo. class </name>
|
13
|
<value>com.hadoop.compression.lzo.LzoCodec</value>
|
14
|
</property>
|
3、在$HADOOP_HOME/etc/hadoop/mapred-site.xml加上如下配置
01
|
<property>
|
02
|
<name>mapred.compress.map.output</name>
|
03
|
<value> true </value>
|
04
|
</property>
|
05
|
06
|
<property>
|
07
|
<name>mapred.map.output.compression.codec</name>
|
08
|
<value>com.hadoop.compression.lzo.LzoCodec</value>
|
09
|
</property>
|
10
|
11
|
<property>
|
12
|
<name>mapred.child.env</name>
|
13
|
<value>LD_LIBRARY_PATH=/usr/local/hadoop/lzo/lib</value>
|
14
|
</property>
|
将刚刚修改的配置文件全部同步到集群的所有机器上,并重启Hadoop集群,这样就可以在Hadoop中使用lzo。
四、如何使用
这里在Hive中使用一下lzo,在hive中创建一个lzo表:
1
|
hive> create table lzo(
|
2
|
> id int ,
|
3
|
> name string)
|
4
|
> STORED AS INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'
|
5
|
> OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' ;
|
6
|
OK
|
7
|
Time taken: 3.423 seconds
|
1
|
FAILED: Error in metadata: Class not found: \
|
2
|
com.hadoop.mapred.DeprecatedLzoTextInputFormat
|
3
|
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
|
请检查你的环境是否配置好。
然后在本地用lzo压缩一个文件,先看看users.txt的内容:
01
|
[wyp @master ~]$ cat users.txt
|
02
|
1 ^Awyp
|
03
|
2 ^Azs
|
04
|
3 ^Als
|
05
|
4 ^Aww
|
06
|
5 ^Awyp2
|
07
|
6 ^Awyp3
|
08
|
7 ^Awyp4
|
09
|
8 ^Awyp5
|
10
|
9 ^Awyp6
|
11
|
10 ^Awyp7
|
12
|
11 ^Awyp8
|
13
|
12 ^Awyp5
|
14
|
13 ^Awyp9
|
15
|
14 ^Awyp20
|
16
|
[wyp @master ~]$ lzop users.txt
|
17
|
[wyp @master ~]$ ls -l users.txt*
|
18
|
-rw-r--r-- 1 wyp wyp 97 Mar 25 15 : 40 users.txt
|
19
|
-rw-r--r-- 1 wyp wyp 154 Mar 25 15 : 40 users.txt.lzo
|
将users.txt.lzo的数据导入到lzo表里面:
01
|
hive> load data local inpath '/home/wyp/users.txt.lzo' into table lzo;
|
02
|
Copying data from file:/home/wyp/users.txt.lzo
|
03
|
Copying file: file:/home/wyp/users.txt.lzo
|
04
|
Loading data to table default .lzo
|
05
|
Table default .lzo stats: [num_partitions: 0 , num_files: 1 ,
|
06
|
num_rows: 0 , total_size: 154 , raw_data_size: 0 ]
|
07
|
OK
|
08
|
Time taken: 0.49 seconds
|
09
|
hive> select * from lzo;
|
10
|
OK
|
11
|
1 wyp
|
12
|
2 zs
|
13
|
3 ls
|
14
|
4 ww
|
15
|
5 wyp2
|
16
|
6 wyp3
|
17
|
7 wyp4
|
18
|
8 wyp5
|
19
|
9 wyp6
|
20
|
10 wyp7
|
21
|
11 wyp8
|
22
|
12 wyp5
|
23
|
13 wyp9
|
24
|
14 wyp20
|
25
|
Time taken: 0.244 seconds, Fetched: 14 row(s)
|
好了,我们可以在Hadoop中使用lzo了!!(完)
转载于:https://www.cnblogs.com/zhzhang/p/5600625.html
【转】hadoop2.6 配置lzo压缩相关推荐
- Hadoop配置lzo压缩
前言 OS:CentOS 7 hadoop:2.7.7 lzo:lzo-2.10 Apache Maven:3.6.0 JDK:1.8.0_221 hadoop-lzo是一个围绕lzo压缩算法实现的M ...
- HDFS和Spark配置LZO压缩,Spark读取LZO创建正常Task数量
1.说明 为了解决,数据日益增长并且目前使用Snappy压缩导致的Spark读取时会出现OOM,并且处理起来速度过慢的问题,决定使用LZO+Index来解决问题. 线上Hadoop版本3.2.1,Sp ...
- HDFS配置lzo压缩
参考 https://www.cnblogs.com/caoshouling/p/14091113.html, 做了验证,很好的文档. 1) 停止hdfs集群 2)安装配置maven https:// ...
- Hive之配置和使用LZO压缩
前言 OS:CentOS 7 Hive:2.3.0 Hadoop:2.7.7 MySQL Server:5.7.10 Hive官方手册:LanguageManual LZO 在配置Hive使用lzo压 ...
- Hadoop之Lzo压缩配置
Hadoop之Lzo压缩配置 一.hadoop-lzo编译 hadoop本身并不支持lzo压缩,故需要使用twitter提供的hadoop-lzo开源组件.hadoop-lzo需依赖hadoop和lz ...
- Hadoop LZO压缩配置
1.压缩配置 1)hadoop本身并不支持lzo压缩,故需要使用twitter提供的hadoop-lzo开源组件.hadoop-lzo需依赖hadoop和lzo进行编译,编译步骤如下. Hadoop支 ...
- hadoop3.x支持LZO压缩配置
前提 在hadoop中使用lzo的压缩算法可以减小数据的大小和数据的磁盘读写时间,不仅如此,lzo是基于block分块的,这样他就允许数据被分解成chunk,并行的被hadoop处理.这样的特点,就可 ...
- Hadoop支持LZO压缩配置
支持LZO压缩配置 hadoop本身并不支持lzo压缩,故需要使用twitter提供的hadoop-lzo开源组件.hadoop-lzo需依赖hadoop和lzo进行编译,编译步骤如下. hadoop ...
- Hadoop 2.2.0安装和配置lzo
2019独角兽企业重金招聘Python工程师标准>>> Hadoop经常用于处理大量的数据,如果期间的输出数据.中间数据能压缩存储,对系统的I/O性能会有提升.综合考虑压缩.解压速度 ...
- Hadoop之使用LZO压缩并支持分片
1.简介: 安装LZO: lzo并不是Linux系统原生支持,所以需要下载安装软件包,这里至少需要安装3个软件包. lzo, lzop, hadoop-gpl-packaging. 增加索引: gpl ...
最新文章
- 在7分钟内深刻理解咖喱
- 线程池的一些疑问和解答
- Apache ZooKeeper - ZK的基本特性与节点应用场景一览
- Jmeter输出完美报告
- apache虚拟主机301跳转问题
- 定位到元素后获取其属性_(11)让“盒子”动起来:② “定位”和 BFC | CSS
- 我想问一下男生,一个女生那么真诚热情又卑微的喜欢你,你们是怎么做到视而不见的呢?
- 使用LDAP查询快速提升域权限
- 成都二套房限购政策有哪些,看完就知道
- linux su命令快捷键,Linux下su与su -命令的区别
- 双系统还是虚拟机 linux系统时间,mac装双系统好还是虚拟机好_mac装虚拟机好还是双系统-系统城...
- 计算机演示文稿应用主题,使用屏幕阅读器在 PowerPoint 中创建演示文稿的基本任务...
- DDD/ABP/EF Core :新特性Owned Entity Types ,尝试另外一种值对象的配置方式
- 定格动画运用的计算机技术是,定格动画中材料的运用.pdf
- 2021有效的电子邮箱号码大全,外贸企业邮箱地址大全
- 接口安全评估基本流程
- 数据科学的重要支柱——统计学的最佳入门书籍
- 微信群发消息怎么发?微信群发消息只需要4步?
- 苹果应用分身_你喜欢用苹果手机拍照!不学会这4个功能,怪不得拍不出好照片...
- 【求由正方形组成的图形的周长】C++实现
热门文章
- 二级联动菜单(转载)
- 【论文阅读】Deep Residual Learning for Image Recognition
- 吐血整理了下AAAI2022中和NLP相关的论文,包括信息抽取、机翻、NER、多模态、数据增强、问答、多语言、KD、文本纠错等...
- 提示学习 | Prompt-Tuning这么好用?
- 算法工程师当前选哪个方向好?1,计算机视觉;2,自然语言处理;3,风控;4,推荐系统?...
- 金融评分卡项目—6.互联网金融业贷款申请评分卡介绍
- torch--[Pytorch函数] .masked_fill_() ;关于pytorch中@和*的用处
- 博文视点OpenParty第11期“世界黑客大会那些事儿”成功举办
- “Java引领技术人生”巡讲活动圆满结束
- Java - 多线程Callable、Executors、Future