首页 > 其他 > 详细

hadoop之数据压缩与数据格式

时间:2019-04-23 16:45:32      阅读:230      评论:0      收藏:0      [点我收藏+]

a.数据压缩

优点: 1.节省本地空间 2.节省带宽

缺点: 花时间

1.MR中允许进行数据压缩的地方有三个:

技术分享图片

1)input起点  2)map处理之后  3)reduce处理之后进行存储

2.压缩格式

常见的压缩计数有bzip2、gzip、lzo、snappy.它们之间的性能比较如下:

压缩比 : bzip2>gzip>lzo = snappy ,bzip2最节省空间

解压速度 :lzo = snappy > gzip > bzip2 , lzo解压速度是最快的

另外Google研发的snappy的压缩格式,嵌入在hadoop中,因为其可靠性和性能的均衡性,非常受到大家欢迎。

snappy压缩格式的性能与lzo差不多,都是属于压缩解压块,但是压缩比高的类型。以下是它们的一些详细参数:

  压缩比 压缩速率 解压速率
gzip/deflate 13.4% 21MB/s 118MB/s
bzip2  13.2% 2.4MB/s 9.5MB/s
lzo 20.5% 135MB/s 410MB/s
snappy 22.2% 172MB/s 409MB/s

 

 

 

 

(本表数据来源于博客: https://blog.csdn.net/zhouyan8603/article/details/82954459 , 感谢玉羽凌风!)

 

3.mr中如何使用数据压缩?

刚才谈到了三个可以进行压缩的地方,这里分别说明:

1)输入时,hadoop依据文件格式进行自动识别并解压,这个是自动的,不需要关心太多

2)在map之后有一个可以压缩的点,需要配置以下两个参数进行压缩:

mapreduce.map.output.compress  - false/true  - 在 map处理后是否启用压缩

mapreduce.map.output.compress.codec – 选择编解码器

3)在reduce之后有一个可以压缩的点,需要配置以下三个参数进行压缩:

mapreduce.output.fileoutputformat.compress – false/true – 在 reduce后是否压缩

mapreduce.output.fileoutputformat.compress.codc – 选择编解码器

mapreduce.output.fileoutputformat.compress.type – RECORD/BLOCK/NONE  其中RECORD是针对记录的压缩,BLOCK是针对块的压缩

其中使用RECORD压缩率比较低,因此一般使用BLOCK。

 

**注:hadoop支持的编解码器 - 配置中需要用到:

Zlib → org.apache.hadoop.io.compress.Default.Codec

    其中Zlib是MR使用的默认压缩格式,当指定上面的bool值为true且没有指定codec的情况下,默认使用这个Codec

Gzip → org.apache.hadoop.io.compress.GzipCodec

Bzip2 → org.apache.hadoop.io.compress.BZip2Codec

Lzo → com.hadoop.compression.lzo.LzoCodec

Lz4 → org.apache.hadoop.io.coompress.Lz4Codec

Snappy → org.apache.hadoop.io.compress.SnappyCodec

其他关于压缩问题的补充: https://www.cnblogs.com/ggjucheng/archive/2012/04/22/2465580.html 

4.hive中如何使用数据压缩?

技术分享图片

(注:本图引自北风网)

1)Input处的数据压缩,需要在创建表的时候指定 

 

--创建数据表:
create table if not exists textfile_table( site string, url string, pv bigint, label string) row format delimited fields terminated by ‘\t‘ stored as textfile; --插入数据: set hive.exec.compress.output=true; --启用压缩格式 set mapred.output.compress=true; set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; --指定输出的压缩格式为Gzip set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec; insert overwrite table textfile_table select * from T_Name;

hadoop之数据压缩与数据格式

原文:https://www.cnblogs.com/yosql473/p/10756906.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!