《HBase应用架构》是一本非常实用的指南,涵盖了HBase的原理、架构和应用案例。书中提供了丰富的真实环境中的案例说明,通过手把手的指导和对案例的详细阐释,读者能够深入了解HBase的应用。该书不仅包括了HBase集群部署的指南,还详细介绍了大型企业如何利用HBase解决实际问题的案例。书中还提供了基本的解决方案和代码示例,帮助读者实现自己的应用场景。对于想要深入学习和应用HBase的读者来说,这本书是一份非常有价值的参考资料。欢迎大家下载阅读,探索HBase应用的无限可能。
HBase应用架构 电子书封面
内容节选
HBase概述
HBase是一个分布式存储、数据库引擎,可以支持千万的QPS、PB级别的存储,这些都已经在生产环境验证,并且在广大的公司已经验证。特别是阿里、小米、京东、滴滴内部都有数千、上万台的HBase集群。选择一个技术的首要条件是对齐大公司,大公司会投入大量的人力去维护、改进、贡献社区。
关于NewSQL与NoSQL的关系
技术总是不断向前发展的,如今都在提NewSQL,其实NewSQL在笔者看来是NoSQL之上的一个封装,一个子场景。NoSQL中的大表,典型就是提供了KV1V2……Vn,其中每个V可以是1b,也可以是100MB。可以说是一个元的存在,就类似于数字世界的01,可以任意组合。在以HBase为代表的NoSQL中,HBase可以组合出任意的场景,NewSQL可以是之上加了SQL层或者更近一层添加事务的子场景。
关于计算与存储分离
在云上,对于引擎最为核心的就是存储计算分离,存储可以按需计费,起码得弹性伸缩。计算则按节点存储提供。如果完全按照QPS计费,要么费用高得吓人,要么难以满足更多的场景,比如存储10M,到底算一次QPS,还是多少次。 由于HBase天生就是存储计算分离,天然比较适配云上的架构,可以说到了云上,HBase更加具有优势。
HBase场景
HBase可以说是一个数据库,也可以说是一个存储。拥有双重属性的HBase天生就具备广阔的应用场景。在最近的一些版本中,引入了OffHeap降低gc影响,优化链路延迟,提供Replica等可以满足在线的需求。引入MOB,可以存储10M左右的对象,完全适应了对象存储。另外由于自身的并发能力、存储能力,可以说是具有最为竞争力的引擎
对象存储:我们知道不少的头条类、新闻类的的新闻、网页、图片存储在HBase之中,一些病毒公司的病毒库也是存储在HBase之中
时序数据:HBase之上有OpenTSDB模块,可以满足时序类场景的需求
推荐画像:特别是用户的画像,是一个比较大的稀疏矩阵,蚂蚁的风控就是构建在HBase之上
时空数据:主要是轨迹、气象网格之类,滴滴打车的轨迹数据主要存在HBase之中,另外在技术所有大一点的数据量的车联网企业,数据都是存在HBase之中
CubeDB OLAP:Kylin一个cube分析工具,底层的数据就是存储在HBase之中,不少客户自己基于离线计算构建cube存储在hbase之中,满足在线报表查询的需求
消息/订单:在电信领域、银行领域,不少的订单查询底层的存储,另外不少通信、消息同步的应用构建在HBase之上
Feeds流:典型的应用就是xx朋友圈类似的应用
NewSQL:之上有Phoenix的插件,可以满足二级索引、SQL的需求,对接传统数据需要SQL非事务的需求
内容介绍
当对大量数据构建索引的时候,HBase是一个出色的工具,但是从零开始学习分布式数据库及其生态系统是一件让人望而却步的事情。《HBase应用架构》通过手把手的指导和对真实环境中案例的阐释,你将学会如何架构、设计,以及部署你自己的HBase应用程序。除了HBase原理和集群部署指南之外,本书通过对案例的深入研究,展示了大型企业如何利用HBase解决具体问题的用例。
本书提供了基本的解决方案和代码示例来帮助你实现自己的用例,包括主数据管理(MDM)和文件系统,以及准实时事件处理。你也能学习使用故障排除的方法来帮你避免部署时出现的一些问题。学习HBase能用来做什么,其生态系统包括哪些组件以及如何搭建你的环境。探索现实世界中HBase实例如何部署并投入生产环境。查验用于追踪监控索赔的记录用例,并诊断数据管理以及产品质量。理解HBase如何和Spark、kafka、MapReduce,以及Java API一起使用。学习如何识别最常见的HBase问题,并理解其结果。
目录
- 第一部分 HBase概述
- 第1章什么是HBase 11
- 第2章 HBase原理 15
- 第3章 HBase生态系统 32
- 第4章 HBase规模预估和调优概述 45
- 第5章环境设置 54
- 第二部分 用例
- 第6章用例:HBase作为一个记录系统 77
- 第7章底层存储引擎的实现 87
- 第8章用例:近实时事件处理 111
- 第9章近实时实现事件处理 119
- 第10章用例:HBase作为主数据管理工具 145
- 第11章主数据管理工具HBase的实现 150
- 第12章用例:文档存储 163
- 第13章文档存储的实现 169
- 第三部分疑难问题的定位和排错
- 第14章 region 过多 179
- 第15章列族过多 191
- 第16章热点 196
- 第17章超时和垃圾回收 201
- 第18章 HBCK和不一致 210
hbase compaction主要是合并memstore flush到磁盘上的HFile文件。主要分minor compaction和major compaction。minor compaction只会合并很少的hfile,这个花费的时间也不是很长。而major compaction会合并指定table的所有的HFile,所以花费的时间也比较长,但是能够显著提高hbase的读性能。考虑到白天hbase集群的负载并不是很高,所以很自然想到就是做手工major compaction。写一个简单的脚本就好了。其实就一行语句:echo "major_compact 'tablename'" | hbase shell,然后通过crontab定时启动就好了。做了major compaction以后region server的block locality明显好转,hbase读的性能提升提升了50%以上,晚上导表时间几乎缩短了一半。
大数据技术如火如荼,在大数据挖掘及分析平台技术中,作为海量数据操作及高客户端并发解决方案的 NoSQL 技术特别是 Hbase 首当其冲,在众多项目中得到广泛的应用,但对于 Hbase 表设计模式/IO 考虑/性能调优等实战经验性资料较为匮乏。 本文介绍了 Hbase 的数据模型原理,分析了 Hbase 表扫描/查询操作的时间复杂度,并通过一个游戏公司客户实际案例的讲解,分析了 Hbase 表设计及开发在实际案例中的运用,对比了不同的 Hbase 设计考量对客户端访问模式及检索性能的差异。读者通过案例中 Hbase 表设计模式可以更深刻的理解 Hbase 原理及设计,并且熟悉 Hbase 客户端开发的思路及实现。