为什么要学习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为例,介绍了大量的通用技术实现框架和细节,并安排了较多的针对性地题目。相信通过这些知识的学习理解,可以更加全面地提升读者在多个方面的技术竞争力。
如何购买此书?
目前有三种渠道购买到此书,分别是华章鲜读平台、当当网和京东网。如果觉得可以帮助自己提升竞争力,可以扫描下面二维码进入不同的购买渠道:
有电子版出售吗?
有的 鲜读平台上可以购买
我在亚马逊的kindle上买的,希望博主出更多优质博客
看着搏客有深度、感觉书一定不会差。入手了
您好,我看书中有一些疑惑地地方,可否给个联系方式呢?
举例:
195页,HBCK1.1中,region状态在内存表、hbase:meta表以及zookeeper保持一致
region状态信息zk中并没有,这里指的是哪个znode?
有个region-in-transition的节点
范大大,买了您的书,就是想看关于snapshotMr的问题,但是书中不是很详细,只在174页简单的说明了一下使用的场景,我想问一下,在打完snapshot之后,文件依然变动,导致mr读取不到对应的文件,这个问题您这边遇到过吗,应该怎么解决,hbase的region接管也是已经做过了
mr读取不到文件什么意思,我们没有遇到过
您好,思考题有答案吗?
不好意思 没有标准答案
博主 书里面关于协处理器有讲解吗
书已买
您好 书籍内的章节中国的 范例代码 可以提供么
看了作者的spark-sql join的博客, 受益良多, 买本hbase,支持一下,学习学习,希望后续可以有更多分享
买的老师的纸质版的书来观看 对我来说还是又难度的不过收获也是不小 我应该反复多次拜读之后在跟老师咨询一些自己的疑惑 尤其在数据快照拷贝那里
有个问题想咨询下:hbsae的同步复制可以开主主模式么
官方有支持 但是业界应该很少这么用的
您好,把HBase的行当做redis的hash用会有什么问题吗?比如行数据相当于redis里面的一个hash结构,一个column相当于hash中的一个item。业务上可以保证一行的总column数不会特别多,但是每一行的column qualifier可能都不一样。
column qualifier是指列名吗?HBase本身是支持稀疏的。
是列名。就是列太多了会不会影响性能呢,比如每一行的列列名都不同,比如row1的所有列的列名是[r1-c1,r1-c2 … r1-c100],row2的所有列的列名是[r2-c1,r2-c2 … r2-c100]….这样以此类推
理论上列多不影响性能。但是实际上有多大影响建议使用实际数据测试一把。