书籍作者:胡争 | ISBN:9787111634959 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:1974 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
本书系统介绍HBase基本原理与运行机制,融入了作者多年的开发经验与实践技巧。主要内容包括:HBase的体系结构和系统特性,HBase的基础数据结构与算法、依赖服务、客户端,RegionServer的核心模块,HBase的读写流程,Compaction实现原理和使用策略,负载均衡的实现与应用,HBase的宕机恢复原理,复制、备份与恢复原理,HBase的运维方法、系统调优与案例分析,最后介绍了HBase 2.x的核心技术,以及一些高级话题,如二级索引、单行事务、跨行事务、HBase开发与测试等。
胡争 小米公司HBase工程师,Apache HBase PMC成员,负责Apache HBase项目研发及小米HBase集群维护,对HBase及相关分布式存储系统有很多独到的见解。开源技术爱好者,长期活跃在Apache开源社区,热衷技术分享,博客地址为http://openinx.github.io。
范欣欣 现就职于网易杭州研究院数据科学中心,负责HBase以及分布式时序数据库的内核开发运维工作,对HBase的底层工作原理进行了长时间的探索和深入研究,撰写了大量有关HBase和时序数据库相关的技术文章,深受读者好评。此外,对大数据生态以及数据仓库也有深刻而独到的理解。博客地址为http://hbasefly.com。
这是一本深入介绍HBase系统的书籍,由HBase PMC成员与网易资深工程师倾力打造,多位技术专家联袂推荐。本书不仅用大量图片详细解剖HBase内核,还用案例展示了HBase的开发运维技巧,是一本不可能多得的高质量图书,值得每一位大数据开发运维人员放在案头深读。
为什么要写这本书
Apache HBase是基于Apache Hadoop构建的一个高可用、高性能、多版本的分布式NoSQL数据库,是Google BigTable的开源实现,通过在廉价服务器上搭建起大规模结构化存储集群,提供海量数据高性能的随机读写能力。
HBase项目自2006年提交第一行代码以来,直到如今,经历了13年的蓬勃发展。现在已经有大量企业采用HBase来存储和分析自身飞速增长的业务数据。从全球范围来看,国内HBase的关注度更是高居榜首,这得益于国内互联网、移动互联网、物联网等方向庞大的数据体量。诸多国内大型科技公司,如阿里巴巴、小米、腾讯、网易、华为、滴滴、快手、中国移动等等都已经把HBase作为极重要的基础依赖,很多公司对HBase社区也有长期的投入。截止到目前为止,HBase全球社区已经拥有了74位HBase Committer,而国内就有20位左右的Committer,占了近1/3的比例。近一两年,HBase在国内更是得到了长足的发展,2018年中国HBase技术社区成立,一年时间里社区在多个城市相继组织了9次线下技术沙龙活动,为HBase更好地在国内各公司茁壮成长做出了卓越的贡献。
然而,和社区用户多次交流后发现,他们都希望我们能推荐一本HBase的书。当前市面上有关HBase的书籍大部分都集中于如何使用HBase,例如HBase集群部署、客户端API以及协处理器等。诚然,这对快速掌握和使用HBase非常有好处,但是许多HBase使用者并不满足于此,他们更希望能了解和掌握其内部运行原理。因此,当机械工业出版社的编辑吴怡老师,联系到我们是否有想法为HBase写一本书时,我们毫不犹豫地就答应了。
本书会从设计的角度对HBase的整个体系架构和各核心组件进行系统的分析和讲解。与此同时,还会介绍常用的性能调优策略以及问题诊断的方法和技巧,帮助读者更好的在实际生产环境实践。另外,本书最后章节会集中介绍HBase 2.x版本的核心特性,例如Procedure v2、In Memory Compactions以及MOB等。
读者对象
本书不是一本教你如何部署HBase集群、使用HBase客户端API进行读写操作的书,本书面向那些使用HBase作为数据库后端存储的应用程序开发者、有一定经验的运维人员和对HBase内核设计感兴趣的技术极客。
如果你想深入了解HBase的每个组件是如何工作的,如果你想更好地运维或者调优你的HBase集群,如果你想了解HBase 2.x版本的核心特性,就请阅读本书。想要更好的学习本书,需要具备如下条件:
了解HBase的基本操作
了解C、Java等高级语言
对一些基本算法有所了解,因为本书会从源代码层面分析HBase的工作机制,如果你能了解这些算法,会对你的理解非常有帮助
如何阅读本书
本书有16个章节,分为6个主要部分:
第一部分:HBase基础部分,包含1、2章节。其中第1章主要介绍HBase系统的发展历史、数据模型以及体系结构,第1章节主要介绍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系统实际问题以及解决方案的深入见解。同时感谢我们的家人,没有他们的鼓励和支持,本书不可能完成。最后,一份特别的感谢要送给本书策划编辑吴怡,感谢她在全书撰写过程中所给予的详细指点及其有用的建议。
前言
第1章 HBase 概述
1.1HBase 前生今世
1.2HBase数据模型
1.2.1逻辑视图
1.2.2多维稀疏排序Map
1.2.3物理视图
1.2.4行式存储、列式存储、列簇式存储
1.3HBase体系结构
1.4 HBase系统特性
第2章 基础数据结构与算法
2.1 跳跃表
2.2 LSM树
2.3 布隆过滤器
2.4 设计KV存储引擎Minibase
2.5拓展阅读
第3章 HBase依赖服务
3.1ZooKeeper简介
3.2HDFS简介
3.4拓展阅读
第4章 HBase客户端
4.1 HBase客户端实现
4.1.1 定位Meta表
4.1.2 Scan的复杂之处
4.2 HBase客户端避坑指南
第5章RegionServer的核心模块
5.1 RegionServer内部结构
5.2 HLog
5.2.1 HLog文件结构
5.2.2 HLog文件存储
5.2.3 HLog生命周期
5.3 MemStore
5.3.1 MemStore内部结构
5.3.2 MemStore 的GC问题
5.3.3 MSLAB内存管理方式
5.3.4 MemStore Chunk Pool
5.3.5 MSLAB相关配置
5.4 HFile
5.4.1 HFile逻辑结构
5.4.2 HFile物理结构
5.4.3 HFile的基础Block
5.4.4 HFile中布隆过滤器相关的Block
5.4.5 HFile中索引相关的Block
5.4.6HFile文件查看工具
5.5 BlockCache
5.5.1.LRUBlockCache
5.5.2.SlabCache
5.5.3.BucketCache
5.5.4.不同BlockCache方案性能对比
5.6拓展阅读
第6章 HBase读写流程
6.1 HBase写入流程
6.1.1写入流程的三个阶段
6.1.2 Region写入流程
6.1.3 MemStore Flush
6.2 BulkLoad功能
6.2.1 BulkLoad核心流程
6.2.2 BulkLoad基础案例
6.3 HBase读取流程
6.3.1 Client-Server读取交互逻辑
6.3.2 Server端Scan框架体系
6.3.3过滤淘汰不符合查询条件的HFile
6.3.4HFile中读取待查找Key
思考与练习
6.4深入理解Coprocessor
6.4.1 Coprocessor分类
6.4.2 Coprocessor加载
第7章 Compaction实现
7.1 Compaction基本工作原理
7.1.1 Compaction基本流程
7.1.2 Compaction触发时机
7.1.3 待合并HFile集合选择策略
7.1.4 挑选合适的线程池
7.1.5 HFile文件合并执行
思考与练习
7.1.6Compaction相关注意事项
7.2 Compaction高级策略
第8章 负载均衡实现
8.1 Region迁移
8.2 Region合并
8.3 Region分裂
8.4 HBase的负载均衡应用
8.5拓展阅读
第9章 宕机恢复原理
9.1 HBase常见故障分析
9.2 HBase故障恢复基本原理
9.3 HBase故障恢复流程
第10章 复制
10.1 复制场景及原理
10.1.1管理流程的设计和问题
10.1.2复制原理
10.2 串行复制
10.2.1非串行复制导致的问题
10.2.2串行复制的设计思路
思考与练习
10.3 同步复制
10.3.1设计思路
10.3.2同步复制和异步复制对比
10.4拓展阅读
第11章 备份与恢复
11.1 Snapshot概述
11.2 Snapshot创建
11.2.1 Snapshot技术基础原理
11.2.2 在线Snapshot的分布式架构——两阶段提交
11.2.3 Snapshot核心实现
11.3 Snapshot恢复
11.4 Snapshot进阶
11.5拓展阅读
第12章 HBase运维
12.1 HBase系统监控
12.1.1 HBase监控指标输出方式
12.1.2 HBase核心监控指标
12.1.3 HBase表级监控
12.2 HBase集群基准性能测试
12.3 HBase YCSB
12.4 HBase业务隔离
12.5 HBase Shell
12.6 HBase HBCK
12.8 HBase 核心参数配置
12.8 HBase系统相关日志
12.9 HBase表设计
第13章 HBase系统调优
13.1 HBase GC调优
13.2 G1 GC性能调优
13.2.1 CMS和G1 GC的本质区别
......