【超级有用】大数据的压缩格式
为什么map端用snappy压缩格式;而reduce用gzip或者bzip2的压缩格式呢?为什么每个reduce端压缩后的数据不要超过一个block的大小呢?
检查Hadoop版本的压缩格式是否可用【我在Hadoop cdh 5.7版本中查看Hadoop压缩格式】
$ hadoop version
$ hadoop checknative
一、在解答上述问题以前,我们先说一下压缩的优缺点
【优点】
- 1.减少磁盘存储空间
- 2.降低IO(其中包括网络IO和磁盘IO)
- 3.加快数据在磁盘和网络中的传输速度,从而提高系统的处理速度
【缺点】
1.由于使用数据时需要先解压,就会加重CPU的负荷
二、压缩格式
压缩格式 | 工具 | 算法 | 扩展名 | 是否支持分割 | Hadoop编码/解码 |
DEFLATE | N/A | DEFLATE | .deflate | No | org.apache.hadoop.io.compress.DefalutCodec |
gzip | gzip | DEFLATE | .gz | No | org.apache.hadoop.io.compress.GzipCodec |
bzip2 | bzip2 | bzip2 | .bz2 | Yes | org.apache.hadoop.io.compress.Bzip2Codec |
LZO | Lzop | LZO | .lzo | Yes(if index) | com.hadoop.compression.lzo.LzoCodec |
LZ4 | N/A | LZ4 | .lz4 | No | org.apache.hadoop.io.compress.Lz4Codec |
Snappy | N/A | Snappy | .snappy | No | org.apache.hadoop.io.compress.SnappyCodec |
【压缩比】
从上图可以看出,压缩比越高,压缩速率越慢,压缩时间越长,压缩比:Snappy<LZ4<LZO<GZIP<BZIP2(注意,压缩比的大小不是通过数字的大小来看的,是数字越小,压缩比越大,所以snappy的压缩比是22.2%,数据最大,但是压缩比是最小的)
三、各自压缩格式的优缺点
【gzip】
优点:
- 1@压缩比在四中压缩方式中较高;
- 2@hadoop本身支持,在应用中处理gzip格式的文件就和直接处理文本一样,
- 3@有hadoop native库;
- 4@大部分linux系统自带gzip命令,使用方便
缺点:
- 1@不支持split
【lzo】
优点:
- 1@压缩速率仅次于gzip,解压速率是最快的
- 2@支持split,是hadoop中最流行的压缩格式;
- 3@支持hadoop native库
- 4@需要在linux系统下自行安装lzop命令,使用方便
缺点:
- 1@压缩比要比gzip低
- 2@hadoop本身比支持,需要安装;
- 3@lzo虽然支持split,但是需要对lzo文件建索引,否则hadoop也是会把lzo文件看成一个普通文件(为了支持split需要建索引,需要制定inputformat为lzo格式)
【snappy】
优点:
- 1@压缩速度最快
- 2@支持hadoop native库
缺点
- 1@不支持split
- 2@压缩比最低
- 3@hadoop本身不支持,需要安装
- 4@linux系统下没有对应的命令
【bzip2】
优点:
- 1@支持split
- 2@压缩比最高,比gzip都高;
- 3@hadoop本身支持,但不支持native
- 4@在linux系统下自带bzip2命令,使用方便
缺点:
- 1@压缩解压速率慢
- 2@不支持native
四、总结和应用场景
【总结】
每一种压缩方式都有他的优缺点,讲求压缩效率,压缩比就会低,占用的网络io和磁盘io就多,讲求压缩比,对cpu的损耗就比较大,同时压缩和解压的耗时就比较多,
对于支持split的(lzo和bzip)可以实现并行处理。
【应用场景】
不同的场景选择不同的压缩方式,肯定没有一个一劳永逸的方法,如果选择高压缩比,那么对于cpu的性能要求要高,同时压缩、解压时间耗费也多;选择压缩比低的,对于磁盘io、网络io的时间要多,空间占据要多;对于支持分割的,可以实现并行处理。
应用场景:
input: Flume Sink HDFS <== Spark/MapReduce 比如flume采集到hdfs会使用到压缩
temp: Sink DISK 比如中间数据落地磁盘也可以使用压缩
output: Spark/MapReduce ==> Sink Hadoop 比如spark/mr的输出会到hdfs使用到压缩
一般在HDFS 、Hive、HBase中会使用;
当然一般较多的是结合Spark 来一起使用。
五、为什么map端和reduce端的应用压缩格式和大小的选择?
现在再让我们回过头来看我们刚刚开始提出的问题
【为什么map端用snappy压缩格式;而reduce用gzip或者bzip2的压缩格式呢?为什么每个reduce端压缩后的数据不要超过一个block的大小呢?】
这个问题可以结合前边老师提出的为什么MR的执行性能不理想来考虑?
当时这个问题的答案是因为每次都要落地到磁盘,
1、Map压缩主要是增加mr运行的效率,我们就需要找压缩效率最高的压缩格式,snappy的压缩时间最快
2、Reduce压缩就是输出文件压缩 ,故考虑占用磁盘空间的大小;选择高压缩比gzip或者bzip2;而考虑到会用reduce结果做二次运算;
则对于选用不支持分割gzip或者bzip2原因有两个:
(1)是这两个压缩格式高
(2)对于不可分割我们采用每个reduce端压缩后的数据不要超过一个block的大小的方法;则对于后续的map清洗也就不会出现分割问题。
【压缩在hadoop中的应用】
参考博客:https://www.cnblogs.com/xuziyu/p/10678135.html
https://my.oschina.net/u/4005872/blog/3030869
【超级有用】大数据的压缩格式相关推荐
- 大数据常见压缩格式以及性能对比
1. 压缩的好处和坏处 好处 减少存储磁盘空间 降低IO(网络的IO和磁盘的IO) 加快数据在磁盘和网络中的传输速度,从而提高系统的处理速度 坏处 由于使用数据时,需要先将数据解压,加重CPU负荷 2 ...
- 大数据-常用压缩方式总结
转载声明 本文系转载自以下两篇文章: 压缩格式gzip/snappy/lzo/bzip2 比较与总结 作者: zzhongcy Snappy.Lzo.Gzip.Bzip2比较 作者: 心有余力 转载仅 ...
- c++大数据量压缩方法——基于zlib的gzip解压缩方法
在项目中用到了基于数据库的大数据量存取时,我们要考虑的是数据读取速度,及数据存储大小,往往数据存储量大的话,数据读取速度也会随之降低,所以我们降低数据存储大小的方法,一是,使用位单位来存储数据,尽量压 ...
- linux、windows中ping大数据包的命令格式
linux下ping包的默认大小为64Byte,次数不限.但有时我们需要尝试ping大数据包,来测试网络的状况,这时,就要指定ping包的大小了. Linux下ping大数据包的格式; 语 法:pi ...
- 压缩格式gzip,bzip2,lzo,snappy
gzip,bzip2,lzo,snappy是hadoop中比较常见的文件压缩格式,可以节省很多硬盘存储,以下是Gzip , BZip2 , Lzo Snappy 四种方式的优缺点 和使用场景 1.Gz ...
- 数据分析大数据面试题大杂烩02
Map端会处理输入数据并产生中间结果,这个中间结果会写到本地磁盘,每个Map的输出会先写到内存缓冲区中,当写入的数据达到设定的阈值时,系统将会启动一个线程将缓冲区的数据写到磁盘,这个过程叫做spill ...
- 《Spark大数据分析:核心概念、技术及实践》大数据技术一览
本节书摘来自华章出版社<Spark大数据分析:核心概念.技术及实践>一书中的第1章,第1节,作者穆罕默德·古勒(Mohammed Guller)更多章节内容可以访问云栖社区"华章 ...
- hadoop中MapReduce中压缩的使用及4种压缩格式的特征的比较
在比较四中压缩方法之前,先来点干的,说一下在MapReduce的job中怎么使用压缩. MapReduce的压缩分为map端输出内容的压缩和reduce端输出的压缩,配置很简单,只要在作业的conf中 ...
- Hadoop文件压缩格式分析和比较
Hadoop支持压缩格式: 压缩格式 可分割 算法 扩展名 Linux工具 gzip 否 DEFLATE .gz gzip lzo 是(加索引) LZO .lzo lzop snappy 否 Snap ...
- 面向智能化软件开发的开源生态大数据
点击上方蓝字关注我们 面向智能化软件开发的开源生态大数据 张洋1, 王涛1, 尹刚2,3, 余跃1, 黄井泉3 1 国防科技大学计算机学院,湖南 长沙 410073 2 绿色计算产业联盟,北京 100 ...
最新文章
- 证明创建runnable实例和普通类时间一样长
- [No000014]听说不背单词,考英语会是这种下场-我们为什么必须背单词?
- 机器学习笔记(3) 随机森林
- Java从零开始学十四(包和访问控制)
- 【100题】三十五 求一个矩阵中最大的二维矩阵(元素和最大)
- java 如何查看jdk版本位数
- R语言数据清洗实战——高效list解析方案
- 广州最最最牛逼的 IT 公司全在这了!
- 关于Atmel A5D31平台ALC5640音频芯片的问题记录
- Origin 2022安装教程(附下载链接)
- canal 记录 ROWDATA TRANSACTIONBEGIN
- wget -O- ...|sh 的含义
- 在 V2EX 的开发环境里尝试了一下 OneAPM @livid
- H2数据库中的数据类型
- C语言获取执行程序所在的目录路径
- python爬取微博博主历史博文存入Excel
- echarts关系图指向混乱
- 2021 An Updated Comparison of Four Low Earth Orbit Satellite Constellation Systems to Provide Global
- 从零开始研发GPS接收机连载——8、跟踪调试之遇到瓶颈
- 研究开发出 3D 打印 “食品墨水”