文章目录

  • 1.压缩的好处和坏处
  • 2.压缩格式
  • 3.压缩测试
  • 4.优缺点
  • 5.图解MapReduce
  • 6.总结
  • 7.应用场景

为什么会出现需要对文件进行压缩?
在Hadoop中,文件需要存储、传输、读取磁盘、写入磁盘等等操作,而文件的大小,直接决定了这些这些操作的速度。

1.压缩的好处和坏处

好处

  • 减少存储磁盘空间
  • 降低IO(网络的IO和磁盘的IO)
  • 加快数据在磁盘和网络中的传输速度,从而提高系统的处理速度

坏处

  • 由于使用数据时,需要先将数据解压,加重CPU负荷。而且压缩的越狠,耗费的时间越多。

2.压缩格式

压缩格式 工具 算法 扩展名 是否支持分割 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


支持native表示,hadoop自己提供了功能的实现,而不是依赖外部,如bzip2是不支持native,则表示物理机要另行安装支持bzip2压缩的软件。

3.压缩测试

一个简单的案例对于集中压缩方式之间的压缩比和压缩速度进行一个感观性的认识

测试环境:
8 core i7 cpu
8GB memory
64 bit CentOS
1.4GB Wikipedia Corpus 2-gram text input

压缩比

压缩时间/解压时间

可以看出,压缩比越高,压缩时间越长,压缩比:Snappy<LZ4<LZO<GZIP<BZIP2

4.优缺点

a. gzip

  • 优点:压缩比在四种压缩方式中较高;hadoop本身支持,在应用中处理gzip格式的文件就和直接处理文本一样;有hadoop native库;大部分linux系统都自带gzip命令,使用方便
  • 缺点:不支持split

b. lzo

  • 优点:压缩/解压速度也比较快,合理的压缩率;支持split,是hadoop中最流行的压缩格式;支持hadoop native库;需要在linux系统下自行安装lzop命令,使用方便
  • 缺点:压缩率比gzip要低;hadoop本身不支持,需要安装;lzo虽然支持split,但需要对lzo文件建索引,否则hadoop也是会把lzo文件看成一个普通文件(为了支持split需要建索引,需要指定inputformat为lzo格式)

c. snappy

  • 优点:压缩速度快;支持hadoop native库
  • 缺点:不支持split;压缩比低;hadoop本身不支持,需要安装;linux系统下没有对应的命令

d. bzip2

  • 优点:支持split;具有很高的压缩率,比gzip压缩率都高;hadoop本身支持,但不支持native;在linux系统下自带bzip2命令,使用方便
  • 缺点:压缩/解压速度慢;不支持native

5.图解MapReduce

  • 1.第一次传入压缩文件,应选用可以切片的压缩方式,否则整个文件将只有一个Map执行。Use Compressd Map Input:从HDFS中读取文件进行Mapreuce作业,如果数据很大,可以使用压缩并且选择支持分片的压缩方式(Bzip2,LZO),可以实现并行处理,提高效率,减少磁盘读取时间,同时选择合适的存储格式例如Sequence Files,RC,ORC等。
  • 2.第二次压缩应选择压缩解压速度快的压缩方式,生产中,Map阶段数据落盘通常使用snappy压缩格式(快速压缩解压)。Compress Intermediate Data:Map输出作为Reducer的输入,需要经过shuffle这一过程,需要把数据读取到一个环形缓冲区,然后读取到本地磁盘,所以选择压缩可以减少了存储文件所占空间,提升了数据传输速率,建议使用压缩速度快的压缩方式,例如Snappy和LZO。
  • 3.第三次压缩有两种场景分别是:一.当输出文件为下一个job的输入,选择可切分的压缩方式例如:BZip2。二.当输出文件直接存到HDFS,作为归档,选择压缩比高的压缩方式。reduce阶段数据落盘通常使用gzip或bzip2进行压缩(减少磁盘使用)。Compress Reducer Output:进行归档处理或者链接Mapreduce的工作(该作业的输出作为下个作业的输入),压缩可以减少了存储文件所占空间,提升了数据传输速率,如果作为归档处理,可以采用高的压缩比(Gzip,Bzip2),如果作为下个作业的输入,考虑是否要分片进行选择。

6.总结

不同的场景选择不同的压缩方式,肯定没有一个一劳永逸的方法,如果选择高压缩比,那么对于cpu的性能要求要高,同时压缩、解压时间耗费也多;选择压缩比低的,对于磁盘io、网络io的时间要多,空间占据要多;对于支持分割的,可以实现并行处理
☆若该压缩格式不支持文件分割,则后续无法实现并行处理,生产优化核心是让每个文件大小略微低于块大小,如块128M文件怎样为125M。未压缩的文件是支持文件分割的

7.应用场景

一般在HDFS 、Hive、HBase中会使用;
当然一般较多的是结合Spark 来一起使用。

Hadoop之常见压缩格式以及性能对比相关推荐

  1. 大数据常见压缩格式以及性能对比

    1. 压缩的好处和坏处 好处 减少存储磁盘空间 降低IO(网络的IO和磁盘的IO) 加快数据在磁盘和网络中的传输速度,从而提高系统的处理速度 坏处 由于使用数据时,需要先将数据解压,加重CPU负荷 2 ...

  2. Hive常见压缩格式和性能对比

    转载: https://blog.csdn.net/qq_32641659/article/details/88997844 压缩能够减少存储磁盘空间,降低网络IO和磁盘IO,加快数据在磁盘和网络中的 ...

  3. linux 常用压缩格式,Linux常见压缩格式之压缩与解压

    Linux常见压缩格式之压缩与解压 zip格式 压缩:zip -r [目标文件名].zip [原文件/目录名] 解压:unzip [原文件名].zip 注:-r参数代表递归 # Extract arc ...

  4. linux 压缩文件性能,Linux常见压缩格式Tar、Zip和Gz格式之不同

    Linux 中大家在下载文件时常见的压缩文件有 .tar..zip 或 .gz 等扩展名,大多数用户都已经见怪不怪了.那 Linux 中为什么要搞出这么多种压缩格式,Tar.Zip 和 Gz 之间到底 ...

  5. hadoop 四种压缩格式

    1 gzip压缩 优点:压缩率比较高,而且压缩/解压速度也比较快:hadoop本身支持,在应用中处理gzip格式的文件就和直接处理文本一样:有hadoop native库:大部分linux系统都自带g ...

  6. 常见压缩格式(未完待续)

    说明:仅供学习使用,请勿用于非法用途,若有侵权,请联系博主删除 作者:zhu6201976 博客:https://blog.csdn.net/zhu6201976 一.Windows 1.rar 2. ...

  7. 常见压缩格式压缩与解压方法

    文件后缀 解压命令 压缩命令 .zip(需要zip) unzip File.zip zip File.zip DirName .rar(需要rar) rar x File.rar rar a File ...

  8. HADOOP与HDFS数据压缩格式

    HADOOP与HDFS数据压缩格式 1.cloudera 数据压缩的一般准则 一般准则 是否压缩数据以及使用何种压缩格式对性能具有重要的影响.在数据压缩上,需要考虑的最重要的两个方面是 MapRedu ...

  9. 【Hive】压缩格式

    常见压缩格式 压缩方式 压缩比 压缩速度 解压缩速度 是否可分割 gzip 13.4% 21 MB/s 118 MB/s 否 bzip2 13.2% 2.4MB/s 9.5MB/s 是 lzo 20. ...

最新文章

  1. Unity光照与渲染设置学习笔记
  2. 下巴痤疮的治疗方法有哪些?
  3. 初建FreeMarker工程
  4. 【渝粤教育】电大中专混凝土结构作业 题库
  5. 一支笔卖70万,为的是能打开笔,复杂的像辆车,英国女王都用它
  6. 微积分经典概念:极限、连续与函数
  7. python3.4编程,麻瓜编程·python实战·4-3自学:给4-2作业换新界面
  8. 【安全狗高危安全通告】2月“微软补丁日” 发布多个高危漏洞
  9. 269个JavaScript工具函数,助你提升工作效率(2)
  10. 每次开机都要按F1的解决办法
  11. 【力扣】【初级算法】【数组10】有效的数独
  12. 微信小程序多音频场景处理 - 背景音频
  13. 在git clone报错
  14. 转:条件型 CORS 响应下因缺失 Vary: Origin 导致的缓存错乱问题
  15. 区块链女侠杨霞:为区块链代码提供军事级的安全检测丨蚂蚁区块链大赛成都站火热报名...
  16. luoguP1462 通往奥格瑞玛的道路[四星]
  17. Oracle 11g 数据类型
  18. 自编高中数学---排列组合公式推导
  19. c语言中的中pred函数作用,C++ partition()和stable_partition()函数详解
  20. 利用Python 代码实现人体肤色检测

热门文章

  1. 2023“全球最佳护照”排名出炉!这些国家,含金量超高!
  2. 『优先队列』Fedor and coupons
  3. 一图说明如何修改VisualStudio工程的配置管理器界面宽度
  4. python算法工程师招聘_经验 | 我心目中招聘深度学习算法工程师的标准
  5. python常见的数据类型有哪些?
  6. php的mktime,php mktime 函数分析
  7. App Store/Google Play开发者如何收款?中国谷歌开发者收款方式总结
  8. 深度学习行业黑话集锦
  9. 卷积神经网络基础(最详细)+如何写代码(Pytorch)+推荐学习顺序+心得感悟
  10. 史前社交网站MySpace丢失12年间所有音频数据!因服务器迁移失败