前言
Apache HBase是基于Apache Hadoop构建的一个高可用、高性能、多版本的分布式NoSQL数据库,是Google BigTable的开源实现,通过在廉价服务器上搭建大规模结构化存储集群,提供海量数据高性能的随机读写能力。
HBase项目自2006年提交第一行代码以来,经历了13年的蓬勃发展。现在已经有大量企业采用HBase来存储和分析飞速增长的业务数据。从全球范围来看,国内HBase的关注度更是高居榜首,这得益于国内互联网、移动互联网、物联网等领域庞大的数据体量。诸多国内大型科技公司,如阿里巴巴、小米、腾讯、网易、华为、滴滴、快手、中国移动等,都已经把HBase作为极重要的基础设施,很多公司对HBase社区也有长期的投入。截至2019年8月,HBase全球社区已经拥有了83位HBase Committer,而国内就有20位左右的Committer,占了近1/4的比例。近一两年,HBase在国内更是得到了长足的发展,2018年中国HBase技术社区成立,一年时间里社区在多个城市相继组织了9次线下技术沙龙活动,为HBase更好地在国内各公司茁壮成长做出了卓越的贡献。
我们和社区用户多次交流后发现,很多人都希望我们能推荐一本HBase的书。当前市面上有关HBase的书籍大部分都集中于如何使用HBase,例如部署HBase集群,使用客户端API进行读写操作以及协处理器等,诚然,这些内容对快速掌握和使用HBase非常有好处,但是许多HBase使用者并不满足于此,他们更希望能了解和掌握其内部运行原理。因此,当机械工业出版社的吴怡编辑询问我们是否有想法为HBase写一本书时,我们毫不犹豫地答应了。
本书从设计的角度对HBase的整个体系架构和各核心组件进行系统的分析和讲解。与此同时,还介绍常用的性能调优策略以及问题诊断的方法和技巧,帮助读者更好地在实际生产环境中实践。另外,本书最后章节集中介绍HBase 2.x版本的核心特性,例如Procedure v2、In Memory Compaction以及MOB等。
本书主要内容
本书不是一本入门级读物,本书面向那些使用HBase作为数据库后端存储的应用程序开发者、有一定经验的运维人员和对HBase内核设计感兴趣的人。
如果你想深入了解HBase的每个组件是如何工作的,如果你想更好地运维或者调优你的HBase集群,如果你想了解HBase 2.x版本的核心特性,就请阅读本书。想要更好地阅读本书,需要具备如下先决条件:
•了解HBase的基本操作。
•了解C、Java等高级语言。
•对一些基本算法有所了解,因为本书会从源代码层面分析HBase的工作机制,如果你能了解这些算法,会使你更深入地理解HBase。
本书共有16章,可以分为6个部分。
第一部分:HBase基础部分,包含第1、2章。其中,第1章主要介绍HBase系统的发展历史、数据模型以及体系结构,第2章主要介绍HBase系统中常用的数据结构以及基础算法。
第二部分:HBase系统相关组件,包含第3、4、5章。其中,第3章重点介绍HBase所依赖的核心组件,包括ZooKeeper、HDFS等,第4章介绍HBase客户端组件实现,第5章介绍RegionServer内部组件的实现。
第三部分:HBase核心工作原理,包含第6、7、8、9、10、11章。其中,第6章详细分析HBase读写流程,第7章介绍HBase Compaction的实现原理,第8章介绍HBase中Region的迁移、合并以及分裂等操作是如何实现的,第9章介绍RegionServer宕机后如何通过HLog进行数据恢复,第10章介绍HBase不同集群之间的复制是如何实现的,第11章介绍HBase如何通过Snapshot机制完成数据的备份和恢复。
第四部分:HBase运维调优实践,包含第12、13、14章。其中,第12章介绍HBase集群常用的运维管理操作,包括集群如何有效监控,基准性能如何测试等,第13章集中介绍HBase集群的常用调优技巧,第14章重点分析几个HBase实际运维案例,通过案例分析介绍HBase集群定位和处理问题的技巧。
第五部分:HBase 2.x核心特性(第15章),介绍HBase最新2.x版本的核心功能与特性。
第六部分:HBase高级话题(第16章),介绍社区中比较热门的二级索引话题,以及HBase内核的开发与测试。
本书的六个部分都是相互独立的话题,读者完全可以从书中任何一个部分开始阅读。当然,如果你想更加系统地学习HBase,建议你从前往后逐章阅读。
致谢
在编写本书的过程中,我们非常感谢给予了我们如此多帮助和鼓励的朋友、家人以及同事们。首先感谢HBase官方社区的开发者,是他们极其卓越的工作让我们有机会写这样一本书。另外,还要感谢许许多多中国HBase技术社区的小伙伴,感谢他们提供丰富的HBase使用场景和相关解决方案,他们的经验和分享对推广和普及HBase项目做出了重大贡献。同时感谢我们的家人,没有他们的鼓励和支持,本书不可能完成。最后,一份特别的感谢要送给本书策划编辑吴怡,感谢她在全书撰写过程中所给予的详细指点以及有用的建议。