HBase 1.3 发布,性能大幅提升

  • Alexandre Rodrigues
  • 魏星

2017 年 2 月 9 日

话题:大数据语言 & 开发AI

Apache HBase 1.3.0 版在 2017 年 1 月中旬正式发布了,新版本支持分层数据的压缩和多个方面的性能提升,像预写日志(WAL)、一个新的RPC机制,等等。HBase 1.3.0 一共修复了 1,700 多个问题。

在一些像OpenTSDB的项目中,HBase 通常被直接用作时序应用或者通过项目本身用作时序应用。在时序应用中,数据常常按照抵达时间的先后顺序队列写入存储单元,查询数据经常发生在一个有限的时间回溯窗口内,这导致最新写入数据的查询操作比旧数据更频繁。

HBase 1.3.0 版本支持分层压缩的特性正好适用于一些特定的应用场景——在极少数情况下,数据被删除或更新的时候——通常要更频繁地扫描最新的数据,而旧数据则较少被扫描。

使用这种新的压缩策略可以轻松记录文件的生存时间(time-to-live,TTL);当将现有存储文件压缩到单个较大的存储文件中时,过期的记录将被删除。

根据谷歌BigTable的建模法则,HBase 基于NoSQL将数据划分成不同的区域,每个区域都分别被定义为关键空间的起始和结束行。HBase 设置了区域服务器来管理多个区域,当一个区域变得过大时,它会被拆分成两个并且随机迁移给其他的区域服务器管理,以便在所有分布式节点之间实现负载均衡。

默认情况下每个区域服务器上都有一个预写日志(WAL),该区域上的所有操作都要写入这个唯一的预写日志(WAL)。而改进的多预写日志(WAL)支持更高性能的写入操作,这使得复制速度更快而同步写入的延迟更低。默认情况下,多预写日志(WAL)的这一特性提供了三个区域分组策略来分配预写日(WAL)志:每个区域的预写日志(WAL)都有一个“身份”标识,轮询调度算法保证每个区域映射的预写日志(WAL)都有其“边界”,区域中不同“命名空间”的表被映射到不同的预写日志(WAL)文件中。性能测试报告显示,预写日志(WAL)在纯SATA磁盘里运行的平均延时减少了 20%;在 SATA-SSD磁盘里运行的延时减少了 40%。

新的 RPC 调度器基于CoDel 算法,用于阻止可用IO无法满足过高请求频率引起的长连接队列。CoDel 算法以可控的延迟来管理活动队列,它根据定义好的阈值来裁决队列中的最小延迟。一旦最小延迟超过阈值,该连接便会被丢弃以便处理其他更有利的最小延迟。

其他的改进还包括一个避免大量 IO 峰值的磁盘刷新吞吐量控制器。这些改进还有助于提高Apache PhoenixOpenTSDB以及其他依赖 HBase 引擎做数据持久化和快速查询功能的软件项目的性能。

查看英文原文:Apache HBase 1.3 Ships with Multiple Performance Improvements


感谢刘志勇对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

大数据语言 & 开发AI