HBase中的压缩算法比较 GZIP、LZO、Zippy、Snappy [转]

摘要:
BigTable和HBase中压缩算法的选择BigTable中使用Zippy算法。目标是尽可能快地实现压缩和解压缩速度,同时减少CPU消耗。在HBase中,在Snappy发布之前,采用了LZO算法,目标类似于BigTable;Snappy发布后,建议使用Snappy算法,可根据实际情况对LZO和Snappy进行更详细的对比测试后选择。总之,以上是GZIP、LZO、Zippy/Snappy压缩算法的特点和一些实用方法的总结和比较。

网址: http://www.cnblogs.com/panfeng412/archive/2012/12/24/applications-scenario-summary-of-compression-algorithms.html

GZIP、LZO、Zippy/Snappy是常用的几种压缩算法,各自有其特点,因此适用的应用场景也不尽相同。这里结合相关工程实践的情况,做一次小结。

压缩算法的比较

以下是Google几年前发布的一组测试数据(数据有些老了,有人近期做过测试的话希望能共享出来):

Algorithm% remainingEncodingDecoding
GZIP13.4%21 MB/s118 MB/s
LZO20.5%135 MB/s410 MB/s
Zippy/Snappy22.2%172 MB/s409 MB/s

注:来自《HBase: The Definitive Guide》

其中:

1)GZIP的压缩率最高,但是其实CPU密集型的,对CPU的消耗比其他算法要多,压缩和解压速度也慢;

2)LZO的压缩率居中,比GZIP要低一些,但是压缩和解压速度明显要比GZIP快很多,其中解压速度快的更多;

3)Zippy/Snappy的压缩率最低,而压缩和解压速度要稍微比LZO要快一些。

BigTable和HBase中压缩算法的选择

BigTable中采用的是Zippy算法,目标是达到尽可能快的压缩和解压速度,同时减少对CPU的消耗。

HBase中,在Snappy发布之前(Google 2011年对外发布Snappy),采用的LZO算法,目标和BigTable类似;在Snappy发布之后,建议采用Snappy算法(参考《HBase: The Definitive Guide》),具体可以根据实际情况对LZO和Snappy做过更详细的对比测试后再做选择。

实际项目中的实践经验

项目中使用clearspring公司开源的基数估计的概率算法:stream-lib,用于解决去重计算问题,如UV计算等,它的特点在于:

1)一个UV的计算,可以限制在一个固定大小的位图空间内完成(不同大小,对应不同的误差率),如8K,64K;

2)不同的位图可以进行合并操作,得到合并后的UV。

当系统中维护的位图越多的时候,不管是在内存中,还是在存储系统(MySQL、HBase等)中,都会占用相当大的存储空间。因此,需要考虑采取合适的算法来压缩位图。这里分为以下两类情况:

1)当位图在内存中时,此时压缩算法的选择,必须有尽可能快的压缩和解压速度,同时不能消耗过多CPU资源,因此,适合使用LZO或Snappy这样的压缩算法,做到快速的压缩和解压;

2)当位图存储到DB中时,更关注的是存储空间的节省,要有尽可能高的压缩率,因此,适合使用GZIP这样的压缩算法,同时在从内存Dump到DB的过程也可以减少网络IO的传输开销。

总结的话

以上是对GZIP、LZO、Zippy/Snappy压缩算法特点的概括比较,以及一些实践上的方法。如有不对之处,欢迎大家指正,讨论。

免责声明:文章转载自《HBase中的压缩算法比较 GZIP、LZO、Zippy、Snappy [转]》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SQLALchemy之创建表,删除表几款免费的不用数据库的php的cms下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

windows程序设计笔记(9)

位图和BitBlt1.位块传送BitBlt(bit-block transfer读作"bit blit"),函数实际上对像素执行了一次位运算操作BitBlt(hdcDest,xDst,yDst,cx,cy,hdcSrc,xSrc,ySrc,dwROP)  //源设备描述表中将一个矩形区的像素传送到目标的另一个设备描述表中相同大小的矩形区.StretchBl...

HBase HA 集群环境搭建

安装准备 已安装并启动 HDFS 集群、Zookeeper 集群 角色分配如下: node-01: namenode datanode regionserver hmaster zookeeper node-02: datanode regionserver zookeeper node-03: datanode regionserver zookee...

报错:关闭HBase时无法找到Master:no hbase master found(完美解决)

报错现象 关闭HBase的时候,报错:no hbase master found 但是此时我可以确定 HMaster 处于存活状态,而且hadoop和zookeeper也都运行正常。 报错原因 此时可以大体确定报错原因,系统找不到HBase的pid文件,pid文件里面是HBase的进程号,找不到进程号系统就没有办法去结束这个进程。 HBase的pid文...

量子计算核心突破!Shor算法实现或使密码成摆设

http://tech.sina.com.cn/d/i/2016-03-05/doc-ifxqafha0387393.shtml   互联网时代绝大多数的加密,都由RSA算法完成。过去我们认为RSA不可破解,但随着量子计算的发展,RSA的安全性正受到挑战。今天刊发在 《科学》杂志的最新论文,量子计算机有史以来第一次以可扩展的方式,用Shor算法完成对数字1...

md5sum 和 sha256sum用于 验证软件完整性

md5sum 和 sha256sum 都用来用来校验软件安装包的完整性,本次我们将讲解如何使用两个命令进行软件安装包的校验: sha 是什么? sha 为安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法...

位图引起的内存溢出OutOfMemory解决方案

一、问题描述:Android下的相机在独自使用时,拍照没有问题,通过我们的代码调用时,也正常,但是更换了不同厂商的平板,ROM由Android4.0变成了Android4.1后,拍照出现了OutOfMemory异常,程序中断退出。如何解决这个问题呢? 二、先看看我们之前所写的代码 1) 调用系统相机(没有怀疑这里出错,代码略) 2)显示图片 mImageV...