冯宏华在2013年的大数据技术大会上,针对HBase在小米的应用与扩展进行了深入分享。HBase作为一种开源的非关系型分布式数据库,基于Google Bigtable实现,适用于大规模数据集的随机实时读写访问。冯宏华主要围绕HBase在小米的运用现状、已经实施的改进与扩展以及未来计划中的改进进行了介绍。
小米的HBase集群规模达到了15个,其中9个作为在线服务集群、2个离线处理集群和4个测试集群。这些集群支撑了小米内部多个不同的业务,涉及的机器数量达到数百台,每个数据节点配置为24TB的存储空间(12块2TB的磁盘)。HBase在小米的应用场景非常广泛,包括小米云服务、米聊消息存储、小米推送服务、MIUI离线分析和多看阅读的离线分析等。
小米针对HBase进行了一些创新的改进和扩展,其中一项是对HBase的删除操作进行语义校正。在原始的HBase版本中,删除操作的语义存在问题,导致用户在成功写入数据后,可能无法立即读取到该数据,即使在读取过程中没有其他线程对该数据进行读写。冯宏华团队修正了这一语义问题,使得删除标记仅对写入该标记之前的数据有效,而不会影响到后续写入的数据,这一改进得到了 Apache 社区的认可,并记录在 JIRA 的 HBASE-8721 系统中。
除此之外,小米还改进了HBase的跨机房备份功能,解决了原生HBase只能在集群级别进行备份的问题。通过提供可配置的粒度控制,小米使得从主集群复制到备份节点的数据可以具体到每个表或列族(Column Family,简称CF)。这种改进不仅使备份更加灵活,还减少了机房间的网络带宽消耗,该改进也已被记录在 JIRA 的 HBASE-8751 系统中。
小米还针对HBase的写吞吐性能进行了优化,引入了新的写模型,使得性能得到了显著提升,优化后的性能是优化前的3.4倍。这些性能测试的具体结果也在JIRA的 HBASE-8755 系统中有所记录。
冯宏华还介绍了小米在HBase方面的其他扩展,包括Minos工具的开发,该工具主要用于HBase的自动化部署、监控和报警系统,实现了对HBase的集中监控、分类展示以及表级指标聚合。此外,小米还进行了Failover测试,使用ChaosMonkey+工具,可以配置并随机选择执行动作,并在动作前后进行数据正确性验证,确保动作或任务可以重现。通过这些测试,HBase的稳定性和可靠性得到了增强。小米还对HBase进行了压力测试和可用性测试,以确保其在生产环境中的稳定运行。
通过冯宏华的演讲,我们可以看到HBase作为一个优秀的开源数据库,在小米这样的大型互联网公司中的实际应用是非常广泛的,并且为了适应业务需求,小米也做出了相应的改进和扩展。这些工作的成果不但服务于小米内部的多种业务,也通过开源的方式贡献给了整个HBase社区,对于推动HBase发展和大数据技术的普及具有非常积极的意义。