从一无所知到5分钟快速了解HBase

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 从一无所知到5分钟快速了解HBase

1.前言


随着公司业务不断发展,开始遇见越来越多的复杂存储场景。我们在关系型数据库上已经有了比较好的技术积累,但是并不能解决所有问题。


因此,需要对更多存储类型做技术储备。


HBase作为nosql的典型代表,是一个分布式的、面向列的开源数据库,在大数据存储上广受欢迎,因此,第一站就来到这里。


网络上对于HBase的文档有很多,但是看了一圈,没有特别能让一个小白快速入门的介绍。


本文作为一个入门文档,希望能通过自己的理解,来快速认识HBase到底是什么,它的结构、特点、适用场景有哪些,但不会有深入的技术点的说明。


嗯,就是快速,非常快速并且丝滑地去理解HBase到底是啥。


2. 适用场景


一开始,我们肯定需要了解的是,为什么要用HBase。

存储组件比较多,我们就简单谈谈MySQL和HBase的主要对比。

13.jpg


可以看到,在面对海量数据场景时,如果没有较强的事务要求,查询比较简单,那么HBase是非常适合的。


3. 基本概念


3.1 表、行、列和单元格


为什么正文要从这里开始呢?


因为这个是一切的基础,也是我们初次接触HBase最先想到的问题,HBase的数据格式是怎样的?


但是在入门HBase的过程中,发现一个小白想搞明白HBase到底是个什么存储格式还是挺费劲的。


比如给你这样一个HBaes的数据结构,是不是比较难理解是一个怎样的层级概念?

14.jpg


个好的办法就是做 知识的迁移。


所以,从我们熟悉的Mysql来说,是个非常好的方式。


Mysql的表结构我们非常熟悉,所以第一个问题就是,Mysql的表记录在HBase中是如何存储呢?


我们来举个例子,有两张mysql的表,表名叫user和location,表记录如下。


user表

15.jpg


location表

16.jpg


这样的结构,在HBase中的逻辑存储应该是这样的。

17.jpg


抽象出来的概念如下

18.jpg


相信有了这样直接的对比,不用我说,大家也能明白HBase的基本存储概念了。


  • RowKey:是Byte array,是表中每条记录的“主键”,方便快速查找,Rowkey的设计非常重要。
  • Column Family:列族,拥有一个名称(string),包含一个或者多个相关列
  • Column:属于某一个column family,familyName:columnName,每条记录可动态添加
  • Value(Cell):Byte array
  • Version Number:类型为Long,默认值是系统时间戳,可由用户自定义(这个概念在上文的逻辑存储中不太好迁移类比,所以上文的模型中没有给出,可以理解为mysql中的mvcc的版本号)


那么,在HBase中确定一个值的方式就比较清楚了。

19.jpg


通过RowKey-CF-Column-Version我们就能找到Value,这样就明白了KV的查询的结构关系。


如果用代码来简单表示,可以这样显示:


SortedMap<RowKey, List<SortedMap<Column,List<Value,TimeStamp>>>>


做个小结:


最基本的单位是列(column)。一列或者多列形成行(row),并且由唯一的行键(row key)来确定存储。反过来,一个表(table)中由若干行,其中每列可能由多个版本(version),在每一个单元格(cell)中存储了不同的值。


3.2 分区概念


第二章对存储结构做了比较直白的说明,下面介绍HBase另一个比较核心的概念:regin。


HBase中扩展和负载均衡的基本单位称为regin,regin本质上是以行键排序的连续存储的区间。


如果regin太大,系统会自动进行拆分(在中间的行键进行一拆二),反之,会把多个regin合并(非自动),以减少存储文件数量。


如果类比mysql,可以看作是分区表partition的概念。


每一个regin只能由一台regin服务器(region server)加载,每一台region server可以加载多个region。


4. 架构


这张图是HBase非常经典的整体架构图。图中展示了HBase的各种组件。

20.jpg


1)Client


Client包含了访问Hbase的接口,另外Client还维护了对应的cache来加速Hbase的访问,比如cache的.META.元数据的信息。


2) Zookeeper


Hbase通过Zookeeper来做master的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等工作。具体工作如下:


  • 通过Zoopkeeper来保证集群中只有1个master在运行,如果master异常,会通过竞争机制产生新的master提供服务
  • 通过Zoopkeeper来监控RegionServer的状态,当RegionSevrer有异常的时候,通过回调的形式通知Master RegionServer上下线的信息
  • 通过Zoopkeeper存储元数据的统一入口地址


3) HMaster


  • master节点为RegionServer分配Region
  • 维护整个集群的负载均衡
  • 维护集群的元数据信息
  • 发现失效的Region,并将失效的Region分配到正常的RegionServer上
  • 当RegionSever失效的时候,协调对应Hlog的拆分


4)HReginServer


HregionServer直接对接用户的读写请求,是真正的“干活”的节点。它的功能概括如下:

  • 管理master为其分配的Region 处理来自客户端的读写请求
  • 负责和底层HDFS的交互,存储数据到HDFS
  • 负责Region变大以后的拆分
  • 负责Storefile的合并工作


5) HDFS


HDFS为Hbase提供最终的底层数据存储服务,同时为Hbase提供高可用(Hlog存储在HDFS)的支持,具体功能概括如下:

  • 提供元数据和表数据的底层分布式存储服务
  • 数据多副本,保证的高可靠和高可用性
相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
分布式数据库 Hbase
HBase sequenceId知识点略记
在HBase中,sequenceId是实现一致性的灵魂,这里的一致性有两方面意思: 顺序性,即先写的先被读到,未提交的写不能被读到; 完整性,包含如下几点; 未持久化到hfile的数据,对应的wal文件不能删除 如果由于wal文件过多需要清理,则需要先把对应的数据持久化 异常恢复过程中,需要.
1698 0
|
6月前
|
存储 NoSQL 分布式数据库
【HBase入门与实战】一文搞懂HBase!
该文档介绍了HBase,一种高吞吐量的NoSQL数据库,适合处理大规模数据。HBase具备快速读写、列式存储和天然支持集群部署的特点,常用于高并发场景。NoSQL与关系型数据库的主要区别在于数据模型、查询语言和可伸缩性。HBase的物理架构包括Client、Zookeeper、HMaster和RegionServer,其中RegionServer管理数据存储。HBase的读写流程利用MemStore和Bloom Filter提高效率。此外,文档还提到了HBase的应用,如时间序列数据、消息传递和内容服务。
594 1
【HBase入门与实战】一文搞懂HBase!
|
6月前
|
Java Shell 分布式数据库
HBase基础编程
HBase基础编程
70 0
|
6月前
|
存储 算法 分布式数据库
HBase原理 | HBase内部探险
HBase原理 | HBase内部探险
116 0
|
负载均衡 监控 Shell
HBase纪要(下)
HBase纪要(下)
101 0
|
负载均衡 Java Shell
HBase纪要(上)
HBase纪要(上)
136 0
|
存储 缓存 分布式计算
HBase纪要(中)
HBase纪要(中)
105 0
|
缓存 分布式数据库 Hbase
【HBase】(六)详解 HBase 的读、写流程(面试重点)
【HBase】(六)详解 HBase 的读、写流程(面试重点)
255 0
【HBase】(六)详解 HBase 的读、写流程(面试重点)
|
存储 缓存 监控
带你读懂 Hbase 的架构组成
Hbase 作为 NoSQL 数据库的代表,属于三驾马车之一 BigTable 的对应实现,HBase 的出现很好地弥补了大数据快速查询能力的空缺。在前面咱们也有介绍过 HBase 的数据模型,感兴趣的小伙伴可以翻看下。谈谈你对HBase数据模型的认识?
468 0
带你读懂 Hbase 的架构组成
|
存储 大数据 分布式数据库
八年磨一剑,重新定义HBase——HBase 2.0&阿里云HBase解读
2018年6月6日,阿里云ApsaraDB for HBase2.0正式发布!从2010年开始“试水”到2018年,拥有了3个PMC,6个Committer,拥有中国最多HBase Committer的公司之一的阿里巴巴是如何八年磨一剑,重新定义HBase的?本文中,阿里云技术专家所在就为你揭晓答案。
14613 0

相关实验场景

更多