uu直播快3平台_UU快3直播官方

看我72变,阿里HBase数据压缩编码探索

时间:2020-01-30 02:04:11 出处:uu直播快3平台_UU快3直播官方

性能优化和用户体验,老也不阿里hbase的团队不懈的追求。当我们歌词 一直在不断丰沛 个人的武器库,努力做最好的海量数据在线存储产品。欢迎对hbase实现,使用有任何现象报告 的同学联系当我们歌词 .

而在另一种生活情況下,要素表存储量较小,但qps大,对rt要求极高。针对一种生活场景,当我们歌词 引入了lz4压缩,其解压强度单位在要素场景下上能 达到lzo的两倍以上。一旦读操作落盘都要解压缩,lz4解压的rt和cpu开销都明显小于lzo压缩。

你可曾遇到一种生活需求,必须几百qps的冷数据缓存,却事先存储水位要浪费几十台服务器?你可曾遇到一种生活需求,几百G的表,都要纯cache命中,性能不上能满足业务需求?你可曾遇到,几十M的小表,事先qps不足,都要不停的split,balance,利用多台服务器来抗热点?

面对繁杂的场景,Ali-HBase团队一直致力于为业务提供更多的确定和更低的成本。本文主要介绍了hbase目前一种生活提高压缩率的主要法子:压缩和DataBlockEncoding。

通过线上数据验证,DIFF encoding上能 减少2-5倍的数据量。

hbase作为一种生活schema free的数据库,合适传统的关系型数据库更加灵活,用户不让设计好表的形态,也上能 在同一张表内写入不同schema的数据。然而,事先缺少数据形态的支持,hbase都要许多许多额外的数据形态来标注长度信息,且无法针对不同的数据类型采用不同的压缩法子。针对一种生活现象报告 ,hbase提出了编码功能,用来降低存储开销。事先编码对cpu开销较小,而效果较好,通常cache中也会开启编码功能。



DIFF 编码事先,对某个文件的seek所含以下两步:

那么在解压缩时,为什么么判断和上个KV的键长否有一样,值长否有一样,写入的时间戳究竟是是原值还是差值呢?一种生活前会通过最早写入的有三个 字节的flag来实现的,

一种生活字节中的8位bit,含义是:

hbase很早就支持了DataBlockEncoding,也许多许多我是通过减少hbase keyvalue中重复的要素来压缩数据。 以线上最常见的DIFF算法为例,某kv压缩事先的结果:

开源hbase通常使用的LZO压缩事先Snappy压缩。这种种生活压缩的同時 特点是都追求较高的压缩解压强度单位,并实现合理的压缩率。然而,随着业务的快速增涨,那么来越多的业务事先事先存储水位现象报告 而扩容。hbase针对一种生活情況,采用了基于跨集群分区恢复技术的副本数优化、机型升级等优化手段,但依然无法满足存储量的快速膨胀,当我们歌词 一直致力于寻找压缩更高的压缩法子。

通过Indexable Delta EncodingHFile的随机seek性能相对于使用事先翻了一倍,以64K block为例,随机seek性能基本与不做encoding相近.在全cache命中的随机Get场景下,相对于Diff encoding rt下降80%,但存储开销仅仅提高3-5%。Indexable Delta Encoding目前已在线上多个场景应用,经受了双十一的考验。以风控集群为例,双集群双十一高峰期访问量接近,但事先上线Indexable Delta Encoding的集群在访问量稍多的情況下,平均读rt减少10%-15%。





目前,2017年双11,ZSTD事先在线上全面铺开,已累计优化存储超过2.5PB,预计全面推开后,节约存储空间超过15PB。LZ4也事先在要素读要求较高业务上线。

下图为某监控类应用zstd压缩算法后,集群整体存储量的下降情況。数据量由80+T减少到75T。

当我们歌词 通过一张图片直观的展示各种压缩算法的性能:



以线上几种典型数据场景为例,看看几种压缩的实际压缩率和单核解压强度单位(以下数据均来自于线上)

Zstandard(缩写为Zstd)是一种生活新的无损压缩算法,旨在提供快速压缩,并实现高压缩比。它既不像LZMA和ZPAQ那样追求尽事先高的压缩比,许多许多我像LZ4那样追求极致的压缩强度单位。一种生活算法的压缩强度单位超过80MB/s, 解压强度单位超过80MB/s,基本上能 满足目前hbase对吞吐量的需求。经验证,Zstd的数据压缩率相对于Lzo基本上能 提高25%-80%,对于存储型业务,这就因为三分之一到四分之一的的成本减少。

通用压缩是数据库减少存储的重要手段,在hbase中也指在广泛应用。通常数据库都指在数据块的概念,针对每个块做压缩和解压。块越大,压缩率越高,scan throughput增加;块越小,latency越小。作为一种生活Tradeoff,线上hbase通常采用64K块大小,在cache中不做压缩,仅在落盘和读盘时做压缩和解压操作。

从性能深度1考虑,hbase通常都要将Meta信息装载进block cache。事先将block大小较小,Meta信息较多,会出现Meta无法完整倒进Cache的情況, 性能下降。事先block大小较大,DIFF Encoding顺序查询的性能会成为随机读的性能瓶颈。针对一种生活情況,当我们歌词 开发了Indexable Delta Encoding,在block内部管理也上能 通过索引进行快速查询,seek性能有了较大提高。Indexable Delta Encoding原理如图所示:



在通过BlockIndex找到对应的数据块后,当我们歌词 从数据块末尾找到每个完整KV的offset,并利用二分查找快速定位到符合查询条件的完整kv,再顺序decode每有三个 Diff kv,直到找到目标kv位置。

热门

热门标签