设为首页 收藏本站
查看: 1257|回复: 0

Hadoop 数据压缩

[复制链接]

尚未签到

发表于 2015-11-11 14:06:13 | 显示全部楼层 |阅读模式
  文件压缩主要有两个好处,一是减少了存储文件所占空间,另一个就是为数据传输提速。在hadoop大数据的背景下,这两点尤为重要,那么我现在就先来了解一下hadoop的文件压缩。
  Hadoop里支持很多种压缩格式,看下表:
DSC0000.jpg


  DEFLATE是同时使用了LZ77算法与哈弗曼编码(Huffman Coding)的一个无损数据压缩算法,源代码可以在zlib库中找到。gzip是以DEFLATE算法为基础扩展出来的一种算法。
  


  所有的压缩算法都是空间和时间的转换,更快压缩时间还是更小压缩比,可以通过参数来指定,-1意味着速度,-9意味着空间。拿gzip做个例子,下面就意味着更快速的压缩:
  

gzip -1 filegzip在时间和空间上的取舍比较折中,bzip2压缩比gzip更有效,但是速度更慢。bzip2的解压速度快于压缩速度。但是和其他压缩格式比又是最慢的,但是压缩效果明显是最好的。snappy和lz4的解压速度比lzo好很多。  
  下图是一些解压缩算法效率的比较:
  


  splitable表示压缩格式是否可以被分割,也就是说是否支持随即读。压缩数据是否能被MapReduce使用,压缩数据是否能被分割就很关键了。
  举个例子:一个未被压缩的文件有1GB大小,HDFS默认的block大小是64MB,那么这个文件就会被分为16个block作为MapReduce的输入,每一个单独使用一个map任务。如果这个文件是已经使用gzip压缩的呢?如果分成16个块,每一个块做成一个输入,显然是不适合的,因为gzip压缩流的随即读是不可能的。实际上,当MapReduce处理压缩格式的文件的时候它会认识到这是一个gzip的压缩文件,而gzip又不支持随即读,它就会把16块分给一个map去处理,这里就会有很多非本地处理的map任务,整个过程耗费的时间就会相当长。
  lzo压缩格式也有同样的问题,但是通过使用hadoop lzo库的索引工具以后,lzo就可以支持splitable。bzip2也是支持splitable。
  那么应该如何选择压缩格式呢?这取决于文件的大小,你使用的压缩工具,下面是几条选择的建议,效率由高到低:
  1.用一些包含了压缩并且支持splitable的文件格式,比如sequence File,RCFile或者Avro文件,这些文件格式我们之后都会讲到。如果是为了快速压缩可以使用lzo,lz4或者snappy压缩格式。
  2.使用提供splitable的压缩格式,比如,bzip2和索引后可以支持splitable的lzo。
  3.提前把文件分成几个块,每个块单独压缩,这样就无需考虑splitable的问题了。
  4.不要压缩文件。
  


  注:以不支持splitable的压缩格式存储一个很大的数据文件是不合适的,非本地处理效率非常之低。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-137956-1-1.html 上篇帖子: Windows下基于Eclipse的Hadoop开发环境完全配置(一) 下篇帖子: Hadoop运维:hive作业跑挂的原因总结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表