内存压缩(A.K.A Accordion)是hbase-2.0.0中的一项新功能。它首先在[Accordion:HBase Breathes with In-Memory Compaction]的Apache HBase博客上引入(https://blogs.apache.org/hbase/entry/accordion-hbase-breathes-with-in)。引用博客:

Accordion将LSM原理[Log-Structured-Merge Tree,HBase所基于的设计模式]重新应用于MemStore,以便在数据仍在RAM中时消除冗余和其他开销。这样做可以降低flush到HDFS的频率,从而减少写入放大和整个磁盘占用空间。由于刷新次数较少,因此MemStore溢出时写入操作停顿的频率降低,因此写入性能得到改善。磁盘上的数据越少,对块缓存的压力越小,命中率越高,最终读取响应时间越短。最后,具有较少的磁盘写入也意味着在后台发生较少的compaction,即,从生产(读取和写入)工作中分割的资源较少。总而言之,内存压缩的效果可以被看作是一个催化剂,使系统整体上运行速度更快。

可在以下链接中了解开发者视图Accordion: Developer View of In-Memory Compaction.

内存压缩在高数据流应用中效果最佳;当数据仍在内存中时,可以消除重写或过期版本。如果写入都是唯一的,则可能会拖慢写入吞吐量(内存压缩有CPU成本)。我们建议您在部署到生产之前进行测试和比较。

在本节中,我们将介绍如何启用Accordion和可用的配置。