学习HBase,你需要这样一本书

为什么要学习HBase?

整个互联网都建立在数据库的底座之上,数据库又林林总总分为很多种,但每个互联网业务发展到一定规模都不可缺少的数据库只有这么几种:以MySQL为代表的关系型数据库以及其分布式解决方案,以Redis为代表的缓存数据库,以ES为代表的检索数据库,再就是分布式持久化KV数据库。而在开源领域,尤其是国内,HBase几乎是分布式持久化KV数据库的首选方案。HBase应用的业务场景非常之多,比如用户画像、实时(离线)推荐、实时风控、社交Feed流、商品历史订单、社交聊天记录、监控系统以及用户行为日志等等。

为什么要写一本这样的书?

笔者在之前的几年时间里写了部分HBase相关的文章,虽然说每篇文章都自成体系,但从HBase系统的层面来看,这些博客之间又似乎缺乏联系。另外,博客中还是缺少很多关键的知识模块,比如HBase负载均衡机制、集群复制功能等。之外,很多读者反馈后期想要尝试生产线上使用HBase 2.x,想要了解更多2.x版本的新特性,当然从长远来看,HBase 2.x肯定会在接下来一段时间慢慢普及。因此就希望写一本书,首先能够把HBase博客的这些内容串起来,让读者能够一气呵成地理解整个HBase的工作原理。再者补齐缺失的核心模块,新增更多的运维调优、案例分析,最后再补充HBase 2.x版本几个最重要的核心特性。

这本书能够带给读者什么东西?

对于HBase这种重量级的核心数据库,理解它的工作机制不仅有助于管理优化好公司的HBase集群、更好的支持更多的业务发展。更重要的,对于自己的知识体系建设尤其重要。这本书,可以从这几个方面帮助你建立(或完善)核心技术体系:
1. KV数据库如何基于LSM存储引擎实现LSM存储引擎及其变种是很多数据库实现的基础,比如常见的MyRocks、HBase、InfluxDB以及Kudu等等。这本书将基于HBase内核视角完整剖析LSM存储引擎的写入、读取以及Compaction等核心细节。这些工作原理对于其他基于LSM存储引擎的数据库都是大同小异。
2. 单机KV数据库如何做成分布式集群单机KV数据库做成分布式集群需要攻克很多技术难题,比如Region如何实现分裂、合并、负载均衡等,如何实现分布式的备份恢复,如何实现集群复制,以及如何实现集群的故障恢复。这些核心技术实现方案将会在本书完整讲解。
3. HBase集群运维、调优、故障定位策略本书在介绍HBase核心工作原理的基础上,使用大量篇幅以案例的形式介绍HBase集群实践相关方法。相信通过这些方法的实践掌握,结合理论知识,完全可以运维好大规模的HBase集群。
总之,这本书以HBase为例,介绍了大量的通用技术实现框架和细节,并安排了较多的针对性地题目。相信通过这些知识的学习理解,可以更加全面地提升读者在多个方面的技术竞争力。

如何购买此书?

目前有三种渠道购买到此书,分别是华章鲜读平台、当当网和京东网。如果觉得可以帮助自己提升竞争力,可以扫描下面二维码进入不同的购买渠道:


范欣欣

网易杭州研究院技术专家。负责网易内部Hadoop&HBase等组件内核开发运维工作,擅长大数据领域架构设计,性能优化以及问题诊断。 著有《HBase原理与实践》一书。 微信公众号:大数据基建。 邮箱:libisthanks@gmail.com。

在 “学习HBase,你需要这样一本书” 上有 21 条评论

  1. 您好,我看书中有一些疑惑地地方,可否给个联系方式呢?
    举例:
    195页,HBCK1.1中,region状态在内存表、hbase:meta表以及zookeeper保持一致
    region状态信息zk中并没有,这里指的是哪个znode?

  2. 范大大,买了您的书,就是想看关于snapshotMr的问题,但是书中不是很详细,只在174页简单的说明了一下使用的场景,我想问一下,在打完snapshot之后,文件依然变动,导致mr读取不到对应的文件,这个问题您这边遇到过吗,应该怎么解决,hbase的region接管也是已经做过了

  3. 看了作者的spark-sql join的博客, 受益良多, 买本hbase,支持一下,学习学习,希望后续可以有更多分享

  4. 买的老师的纸质版的书来观看 对我来说还是又难度的不过收获也是不小 我应该反复多次拜读之后在跟老师咨询一些自己的疑惑 尤其在数据快照拷贝那里

  5. 您好,把HBase的行当做redis的hash用会有什么问题吗?比如行数据相当于redis里面的一个hash结构,一个column相当于hash中的一个item。业务上可以保证一行的总column数不会特别多,但是每一行的column qualifier可能都不一样。

      1. 是列名。就是列太多了会不会影响性能呢,比如每一行的列列名都不同,比如row1的所有列的列名是[r1-c1,r1-c2 … r1-c100],row2的所有列的列名是[r2-c1,r2-c2 … r2-c100]….这样以此类推

发表评论

邮箱地址不会被公开。 必填项已用*标注