HBase入门与实践(第2版)
上QQ阅读APP看书,第一时间看更新

前言

人工智能作为当前最热门的技术之一,其从根本上离不开大数据的支持。如果把人工智能比喻成一个神经网络,那么数据则是在这个神经网络中用来传递信息的化学物质。没有信息传递的神经网络显然一文不值,因此大数据扮演着人工智能基石的角色。Hadoop生态系统中的HDFS和MapReduce分别为大数据提供了数据存储和数据分析能力,但是它们对在线实时的数据存取却无能为力,HBase作为Apache顶级项目,弥补了Hadoop的这一缺陷,满足了在线实时系统低延时的需求。目前HBase在各大互联网公司中几乎都有应用,前景广阔。

从2018年本书第1版出版以来,HBase稳定版一直在不断升级,这期间HBase引入了一些新特性,例如,对分区服务器(RegionServer)进行逻辑分组,以此提供多租户的能力;引入分区分配管理器V2(AssignmentManagerV2),使得分配分区(Region)、维护分区状态的存储不再依赖ZooKeeper,能够更好地应对分区长时间RIT(Region In Transition)问题,也做了很多性能提升的改进(例如,使用堆外内存读写,减轻垃圾回收的压力,提供异步读写的客户端API)。整体来说,HBase 1.x的客户端仍然能够正常访问HBase 2.0的HBase服务器端集群,但是有一些客户端API已经被弃用,需要升级协处理器才能运行。本书以当前稳定版HBase 2.4.9为基础,将Hadoop升级到2.10.1,对客户端API进行了全面升级。本书先介绍HBase基础知识,再带领读者深入研读HBase源代码,从数据读取流程、HBase架构实现(如LSM树和WAL),到构建线上实时低延时系统的调优,结合企业常用的“用户行为日志管理系统”,让读者能够快速上手HBase并了解其实现原理,同时让读者通过分析源代码来了解HBase的设计思想。期望读者能够真正做到从入门到实践。

本书各章的主要内容概括如下。

第1章介绍HBase的诞生背景,以及HBase在国内外各大公司的一些应用场景。

第2章介绍HBase的安装模式,以及分布式部署情况下依赖的ZooKeeper和Hadoop的安装。

第3章介绍与HBase逻辑模型和物理模型相关的概念,如表、分区、行键、列族等,以及这些模型物理上的存储结构。

第4章介绍在HBase Shell中如何使用数据定义语言和数据操纵语言,包括如何创建表、查看表、修改表,使用扫描过滤需要查询的数据,还介绍一些常用的命令,用于查看集群间复制状态、管理分区等。

第5章介绍如何将HBase作为存储系统,包括行键设计原则、选用宽表还是高表等,最后以微信朋友圈的功能实现为例进一步介绍如何在应用中合理地设计HBase表。

第6章介绍HBase Java客户端API,包括在Java客户端API中使用数据定义语言与数据操纵语言、过滤器、事务等。

第7章介绍HBase架构实现,包括存储、数据写入与读取,以及合并策略。

第8章介绍两种类型的协处理器,即观察者类型协处理器和端点类型协处理器,还介绍这两种类型的协处理器如何加载和卸载。

第9章介绍HBase性能调优,包括客户端层面如何设置缓存、跳过WAL写入以及如何使用合适的过滤器,服务器端层面如何完成创建表语句的优化、开启机柜感知、开启短路本地读、开启补偿重试读以及JVM内存调优等。

第10章介绍数据备份与复制的几种方式,包括复制、快照、导出和导入以及复制表。

第11章介绍HBase自带的监控系统,着重介绍HBase JMX监控。

我记得自己最开始将HBase应用到在线系统时,经常出现HBase集群响应延迟、分区服务器宕机的情况,最后不得不对业务做降级、限流,以减轻HBase集群压力,从而恢复服务。那时,我将HBase在线调优的经验积累下来,以为写技术博客和做技术分享积累文章的心态写了不少内容,后来在朋友的鼓励下我决定出版成书,一方面给自己留点儿回忆,另一方面等宝宝长大后算是给她的一个礼物。希望本书能够帮到你!

感谢我的父母对我个人和家庭无私的付出与无微不至的照顾,感谢我的妻子黄晶对我的包容与支持!感谢珠海市魅族科技有限公司和珠海市卓轩科技有限公司为我提供平台,丰富了我的实践经历,最终将实践过程中积累的经验沉淀成书!感谢李柯辰先生与何伟先生对我和本书的鼎力支持与帮助!感谢我生命中遇到的每一个人,愿大家越来越好!祝我的宝贝彭语桐快乐成长!

本书中涉及的示例代码,我都实际运行过,以确保程序的准确性。但是,由于我的水平有限,书中难免出现错误或者不准确的地方。如果读者在阅读过程中发现有错误之处,敬请指正,我的电子邮箱是18676450028@126.com。

彭旭

2022年3月