HBase入门与实践(第2版)

978-7-115-59362-7
作者: 彭旭
译者:
编辑: 孙喆思
分类: HBase

图书目录:

详情

本书以当前稳定版 HBase 2.4.9 为基础,将 Hadoop 升级到 2.10.1 版本,并对客户端 API 进行全面升级。本书以精练的语言介绍 HBase 的基础知识,让初学者能够快速上手使用 HBase;深入分析 HBase 的核心思想(如数据读取和数据备份等)和 HBase 架构(如 B+树、LSM 树和 WAL 等),专注于 HBase 在线实时系统的调优,使 HBase 集群响应延迟更低,让有经验的 HBase 开发人员能循序渐进地理解 HBase 源代码,更 好地调试和解决各种实际问题;本书从企业常见的“用户行为日志管理系统”着手,结合 HBase 的实际应用场景,让读者快速上手,真正做到从入门到实践。 本书非常适合作为有一定 Java 基础的开发人员的 HBase 入门教程,也适合作为HBase 运维人员部署和监控 HBase 的参考手册,还适合作为将 HBase 应用到在线生产环境中的开发人员进行 HBase 在线集群性能调优的技术指南。

图书摘要

版权信息

书名:HBase入门与实践(第2版)

ISBN:978-7-115-59362-7

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

著    彭 旭

责任编辑 孙喆思

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

读者服务:

微信扫码关注【异步社区】微信公众号,回复“e59362”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。


本书以当前稳定版HBase 2.4.9为基础,将Hadoop升级到2.10.1版本,并对客户端API进行全面升级。本书以精练的语言介绍HBase的基础知识,让初学者能够快速上手使用HBase;本书深入分析HBase的核心思想(如数据读取和数据备份等)和HBase架构(如B+树、LSM树和WAL等),专注于HBase在线实时系统的调优,使HBase集群响应延迟更低,让有经验的HBase开发人员能循序渐进地理解HBase源代码,更好地调试和解决各种实际问题;本书从企业常见的“用户行为日志管理系统”着手,结合HBase的实际应用场景,让读者快速上手,真正做到从入门到实践。

本书非常适合作为有一定Java基础的开发人员的HBase入门教程,也适合作为HBase运维人员部署和监控HBase的参考手册,还适合作为将HBase应用到在线生产环境中的开发人员进行HBase在线集群性能调优的技术指南。


这本书循序渐进地介绍了HBase从入门到企业实践调优,深入浅出地阐述了HBase架构与实现原理,以企业必备的用户行为日志管理系统为实践场景,用通俗易懂的语言带领读者走进HBase世界。作者在魅族充分实践了书中架构,并带来了质量和效率的实际提升,同时也降低了云端运营成本。

——李柯辰,前魅族平台事业部总经理,现惟客数据CEO

彭旭是一名优秀的程序员、架构师。本书在介绍HBase基础知识的同时融入了他在魅族将存储系统迁移到HBase的经验和教训,此外还在HBase源代码和架构研究上有涉猎,对初学者、Java相关开发人员和HBase运维人员来说是一本不错的参考书。

——何伟,前魅族Flyme技术委员会主席,现惟客数据CTO

作者将多年的HBase实践经验与心得体会沉淀为本书,书中既有经典的案例分析,也有抽丝剥茧的源代码分析,非常值得大数据行业从业者一读。

——张发恩,前百度云技术委员会主席,现创新工场人工智能工程院首席架构师,创新奇智CTO

作者是一名长期战斗在一线的程序员,本书的内容贴近现实应用场景,用线上真实的案例描述如何构建、优化HBase生产环境。无论是入门者还是实践者都能从本书中汲取经验。

——唐进,前百度云产品委员会主席,现爱乐奇CTO

与拖沓烦冗的英文著作相比,本书篇幅适中,以简练的语言完整地描述了从初学到熟练应用HBase所需学习的所有知识点。

——马杜,华云数据执行副总裁

HBase是一个历久弥坚的分布式列式存储系统,相关图书的出版时间均距今已久。这本书以当前稳定版HBase为基础,着重介绍HBase在线实时系统的调优等,很适合正在将HBase应用到在线生产环境中的开发人员和运维人员阅读。2010年下半年,当当网在纽交所上市前,我受当时CTO的委托加强防盗刷/刷单系统,本质上是要升级其中的高速计数器产品模块,该模块持久化部分的技术选型就是HBase。这是当当网技术团队第一次在生产环境中应用Hadoop和HBase。在这个过程中,最让人记忆深刻的不是技术难度,而是当时的资料很有限。HBase的技术迭代很快,网上大量文档在不同程度上存在过时的问题。与其在网站上找过时的资料,不如直接读代码。本书全面介绍了当前稳定版本的HBase,着实为HBase相关开发人员提供了很大的便利。

——傅强,前当当网技术副总裁,现九枝兰合伙人

HBase是Apache项目,它是一个高可用、高性能、可伸缩和面向列的分布式存储系统,能实现对海量数据的高性能读写。本书的作者是前阿里天猫的工程师,有着丰富的开发经验,相信这本书一定能让读者的HBase理论与实践水平更上一层楼。

——杨开振,《深入浅出Spring Boot 2.x》
《Spring Cloud微服务和分布式系统实践》等书作者

一个有很大价值的开源项目既需要活跃的代码贡献者为其快速迭代铺路,也需要优质的入门资料为广大初学者打下良好的基础。要学习HBase,英文版的Apache HBase Book仍然是最佳的参考手册,英文不是特别好的读者可以选择《HBase权威指南》中文版或者是一些技术作者的专栏博客。本书对于入门者是很好的中文读物。书中配有丰富的案例和插图,让读者可以较为轻松地理解HBase的常用场景和用法。希望本书对广大HBase爱好者有所裨益。

——胡争,小米HBase工程师,HBase Committer

我几年前在维护淘宝的HBase集群时,时常和业务方交流如何基于HBase的架构来设计一个可靠和高性能的业务系统,深知对HBase内部原理的了解能极大提升业务系统性能,提高系统稳定性,还能节约成本。本书以当前HBase最新的稳定版本为基础,十分精准地抽离出了开发者需要重点关注的特点,并辅以典型的场景加以分析,堪称助力业务系统设计的实用手册。此外,作者丰富的一线经验让这本书具有很高的实践价值,可以帮助开发者迅速上手生产系统的安装、部署和API使用。

——邓明鉴,前阿里巴巴高级专家,现ZStack首席架构师


人工智能作为当前最热门的技术之一,其从根本上离不开大数据的支持。如果把人工智能比喻成一个神经网络,那么数据则是在这个神经网络中用来传递信息的化学物质。没有信息传递的神经网络显然一文不值,因此大数据扮演着人工智能基石的角色。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月


本书由异步社区出品,社区(https://www.epubit.com)为您提供相关资源和后续服务。

本书提供源代码,要获得这些代码,请在异步社区本书页面中单击“配套资源”,跳转到下载界面,按提示进行操作即可。注意,为保证购书读者的权益,该操作会给出相关提示,要求输入提取码进行验证。

如果您是教师,希望获得教学配套资源,请直接联系本书的责任编辑(sunzhesi@ptpress. com.cn)。

您还可以扫码右侧二维码, 关注【异步社区】微信公众号,回复“e58939”直接获取,同时可以获得异步社区15天VIP会员卡,近千本电子书免费畅读。

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,单击“提交勘误”,输入勘误信息,单击“提交”按钮即可。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

扫描下方二维码,您将会在异步社区微信服务号中看到本书信息及相关的服务提示。

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书技术审校等工作,可以发邮件给本书的责任编辑(sunzhesi@ptpress.com.cn)。

如果您来自学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接通过邮件发给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。

“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。

“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。

异步社区

微信服务号


HBase至今已有10多年的历史,其分布式弹性伸缩的特性使其在今天的大数据存储系统中占有一席之地。

随着计算机科学技术的发展,电子设备越来越普及,价格也越来越便宜,各种电子设备(如手机、智能家居、网络摄像头、智能汽车等)产生的数据量正在急剧增长,全球数据量的迅猛增长为大数据行业的发展提供了基础保证。市场调研机构预计未来全球每年数据量的平均增长率将达到40%以上,而且数据增长速度越来越快,对一些大公司来说,每天甚至每小时都可以产生TB、PB级的数据。到2030年,全球数据总量预计将超过1YB。

这些数据可能很难存储或者分析,但是很多时候这些数据很有可能成为企业的第一生产力。例如,阿里巴巴的用户行为数据对推荐或者在线广告至关重要,如果你在淘宝搜索了一款手机,稍后你浏览新闻的时候,新闻客户端就会给你推荐一些手机的广告,这样有针对性的广告也就是常说的“千人千面”,极大地提高了广告的转化率。

在分布式数据库系统发展之前,因为缺乏有效或者低成本的方式来存储大量的数据,很多企业会忽略某些数据源,这样导致当真正需要使用某些数据的时候已经找不到可以用来筛选的源数据了,或者即使使用低成本的方式(如廉价磁带或者磁盘)将数据存储下来,也会因为缺乏有效的数据筛选等处理手段而导致数据无法发挥其应有的价值。

传统系统可能很难存储、分析现在各种类型的非结构化数据(如办公文档、文本、音频、图片、用户行为等字段长度可变,每个字段又可以由可重复或者不可重复的子字段组成)与半结构化数据,这些数据存储到关系数据库用于分析会花费更多的时间和金钱。例如,如果使用MySQL存储淘宝的用户行为数据,每天产生的数据量有上百亿甚至更多字节。以MySQL每个表存储4000万行数据计算,这样每天产生的数据需要100个以上MySQL分表,可以想象这对机器、运维以及开发来说是多高的成本。

谷歌公司内部使用的GFS和MapReduce技术正好解决了大量数据存储和分析的问题,而开源社区基于谷歌描述的基于商业硬件集群构建分布式、可扩展的存储和处理系统思想,实现了开源项目Hadoop的两个模块,即HDFS和MapReduce。

HDFS非常适合存储任意的非结构化或者半结构化的数据,它的分布式架构以及简单的扩展方式,使其可以对数据存储提供“无限”的支持,同时因为其可以部署在普通的商业机器集群上,使得存储成本更为低廉。而MapReduce则可以帮助用户在需要的时候利用集群中每台机器的能力“分而治之”,恰当地分析这些数据,提供了处理海量数据的核心能力。

GFS和MapReduce虽然提供了大量数据的存储和分析处理能力,但是对于实时数据的随机存取却无能为力,而且GFS适合存储少量的大文件而不适合存储大量的小文件,因为大量的小文件最终会导致元数据膨胀而可能无法放入主节点的内存。经过多年耕耘,Google终于在2006年发表了一篇名为“Bigtable: A Distributed Storage System for Structured Data”的论文,这篇论文就是HBase的起源。HBase实现了BigTable的架构,如压缩算法、内存操作和布隆过滤器等。目前HBase在各大公司中基本都有使用,如Facebook的消息平台、小米的云服务、阿里巴巴的TLog等许多服务组件。

NoSQL是Not only SQL的缩写,泛指非关系数据库,如HBase、MangoDB、Cassandra等。与传统的关系数据库相比,NoSQL最大的特征就是数据存储不需要一个特定的模式,并具有强大的水平扩展能力。

随着“大数据时代”的到来,特别是超大规模与高并发的社交类型网站的诞生,传统的关系数据库在以下几个方面已经无法满足这些应用系统架构在横向扩展方面的需求了。

(1)并发性:关系数据库更依赖单机性能,对于上万的每秒查询数(Query Per Second,QPS),硬盘I/O无法支撑,并且关系数据库除了写数据还要写索引,而NoSQL,以HBase为例,写入为顺序写入,如果能够容忍部分数据丢失,不写入预写入日志(Write-Ahead-Log,WAL),HBase写入只需写内存,速度大大提高。同时HBase通过分片可以将一台机器的压力均衡地转移到集群的每一台机器。

(2)可扩展性:现在一般的在线系统可用性至少要求达到99.9%,对于淘宝、天猫这种与金钱密切相关的系统,可用性要求就更高了。传统关系数据库的升级和扩展对于系统的可用性是一个很头疼的问题,可能需要停机迁移数据、重启加载新配置等,而且需要运维人员、开发人员、数据库管理员(Database Administrator,DBA)的密切配合,而HBase集群具有线性伸缩、自动容灾和负载均衡的优势,可以很容易地增加或者替换集群节点以扩展集群的存储和计算能力。

(3)数据模型:关系数据库需要为存储的数据预先定义表结构与字段名,而NoSQL无须事先为需要存储的数据定义一个模式,这样可以更容易、更灵活地适配各种类型的非结构化数据。

当然,并不是说NoSQL已经全面优于关系数据库了。NoSQL相比关系数据库也有很多缺点,例如HBase不支持多行事务;基于LSM存储模型导致NoSQL需要读取多个文件来找到需要的数据,这样会牺牲一些读的性能。可以说NoSQL是对关系数据库的一种补充。

现在,很多公司都宣称自己是一家大数据公司。确实现在很多公司都注重数据的采集,据我所知,国内各大互联网公司以及知名企业内部基本都在使用HBase作为数据存储引擎。使用HBase的业务也非常多,如订单、搜索、用户画像、推荐、监控、安全风控等。HBase集群在Facebook已经达到上万节点的规模,下面列举几个应用场景。

这是一个典型的例子,被引用的次数不计其数,Facebook的Like按钮被点了多少次、有多少人浏览过某篇文章、有多少人喜欢这篇文章等数据是由HBase的计数器来存储的,发布者能够实时地看到有多少人给他点赞、有多少人喜欢他的文章。

HBase 在 Facebook 的应用非常成功,Facebook 也输出了一些著名的技术文章,如“Apache Hadoop Goes Realtime at Facebook”和“Facebook’s New Real-Time Messaging System: HBase To Store 135+ Billion Messages A Month”。

淘宝TLog是一个分布式的、可靠的,对大量数据进行收集、分析和展现的系统。TLog的主要应用场景是收集大量的运行时日志,然后分析存储,最后提供数据查询和展现。淘宝的“鹰眼系统”(对请求从开始到结束整个生命周期的追踪,包括哪一步到了哪台机器、每一步花了多长时间、与多少系统有交互等)就是TLog的接入方,每天有上万台机器接入TLog,数据量多达上百TB,其底层就是使用HBase作为存储层的。

TLog的设计参照了OpenTSDB系统。OpenTSDB是一种写在HBase之上的分布式可扩展时序数据库。感兴趣的读者可以搜索OpenTSDB并学习一下。

小米云服务基本是基于HBase存储的。这里以云端数据的同步备份功能为例,用户的照片、联系人、短信、通话记录、米聊等数据中的大部分是非结构化的。重点是数据按用户隔离,用户只需访问与自己相关的数据,非常契合HBase的分区自动负载均衡,只需使用用户ID来进行分区,用户量或者数据量的持续增长就可以非常容易地通过为HBase集群添加节点来解决。

小米对HBase也做了很多贡献,其自研的HBase自动化部署与监控系统Minos已经开源,读者可以去GitHub搜索项目Minos了解详情。

目前正处于企业数字化转型的关键阶段,现在大部分公司都非常注重数据的收集,用数据来驱动业务发展(比如现在手机上使用的每个应用都有各种埋点,每一次浏览、点击等事件都会被上传到服务器端存储),收集的这些行为数据很容易价值化,价值化之后可以用来做很多事情,例如,用户画像既可以为用户构建用户基本信息、行为特征、社交、购买力等静态标签,也可以建立短期的动态标签。假设用户刚买车,可能就需要购买一些相关的车载用具。

通过给用户构建一个立体的画像,系统可以近乎实时地分析用户的行为,了解用户的需求,从而实现精准化营销,这对企业尤其是电商企业至关重要。本书会以电商系统的用户行为数据的使用作为实战案例来一步一步介绍HBase的相关知识。

微信扫码关注【异步社区】微信公众号,回复“e59362”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。


相关图书

HBase入门与实践
HBase入门与实践
HBase权威指南
HBase权威指南
HBase实战
HBase实战
HBase管理指南
HBase管理指南

相关文章

相关课程