暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

技术25期:我终于看懂了HBase,太不容易了...

普适极客 2021-05-14
606


前言


本文主要介绍HBase适用场景、基本结构、特点等,便于读者快速理解“什么是HBase”


01 HBase的适用场景


  • HBase和关系型数据库对比如下:



通过对比可以看到,HBase适用于面对海量数据时,没有较强的事务要求,查询比较简单的场景。


02 HBase的数据模型


举个例子,在MySql中现有两张表,表名分别是User和Location,表记录如下所示:


id

UserName

Age

1

张三

20

2

李四

26

User表


id

Province

City

1

浙江

杭州

2

江苏

南京

Location表


  • 以上两张表在HBase中的逻辑存储如下:

行键
User
Location
UserName
Age
Province
City
1
张三
20
浙江
杭州
2
李四
26
江苏
南京
 HBase表逻辑视图

HBase的基本存储概念如下:

  • 行键(RowKey):每一行都以行键(Row Key)来进行唯一标识,行键可以是任意字符串。
  •  列族(Colunm Family):是一些列的集合,列族支持动态扩展,无须预定义列的数量以及类型。
  • 列标识(Column Qualifier):列族中的数据通过列标识来进行定位,通常以 Column Family:Colunm Qualifier 来确定列族中的某列。
  • 时间戳(Timestamp):在默认情况下,每一个单元格插入数据时都会用时间戳来进行版本标识。
  • 单元格(Cell):每一个行键、列族、列标识共同确定一个单元格,每个单元格保存着同一份数据的多个版本,不同时间版本的数据按照时间先后顺序排序,最新的数据排在最前面。

那么,在HBase中如何确定一个列值就显而易见了,通过行键-列族-列标识符-时间戳,就可以查找到对应的列值。


03 HBase的分区概念 


HBase中扩展和负载均衡的基本单位称为regin,regin本质上是以行键排序的连续存储的区间。如果类比MySql,可看作是分区表partition的概念。

如果regin太大,系统会自动进行拆分(在中间的行键进行一拆二),反之,会把多个regin合并(非自动),以减少存储文件数量。每一个regin只能由一台regin服务器(region server)加载,每一台region server可以加载多个region。

04 HBase的架构


HBase读写数据的流程一般是由Client客户端请求到Zookeeper,然后Zookeeper返回HRegionServer地址给Client客户端,Client客户端得到Zookeeper返回的地址去请求HRegionServer,HRegionServer读写数据后返回给Client客户端。HBase架构图如下所示:


Client客户端:它提供了访问HBase的接口,并且维护了对应的cache来加速HBase的访问,比如cache的.META.元数据的信息。

Zookeeper:存储HBase的元数据(meta表),无论是读还是写数据,都是去Zookeeper里边拿到meta元数据告诉给客户端去哪台机器读写数据。

HMaster:会处理元数据的变更和监控RegionServer的状态,具体功能概括如下:
  • master节点为RegionServer分配Region
  • 维护整个集群的负载均衡
  • 维护集群的元数据信息
  • 发现失效的Region,并将失效的Region分配到正常的RegionServer上
  • 当RegionSever失效的时候,协调对应Hlog的拆分

HRegionServer:直接对接用户的读写请求,是真正的“干活”的节点,具体功能概括如下:
  • 管理master为其分配的Region 处理来自客户端的读写请求
  • 负责和底层HDFS的交互,存储数据到HDFS
  • 负责Region变大以后的拆分
  • 负责Storefile的合并工作

HDFS:为HBase提供最终的底层数据存储服务,同时为Hbase提供高可用(Hlog存储在HDFS)的支持。

总 结
HBase 是一个构建在 Hadoop 文件系统之上的面向列的数据库管理系统,因此能存储海量的数据。HBase在HDFS之上提供了高并发的随机写和支持实时查询,这是HDFS不具备的。HBase还有一个特点就是:存储数据的“结构”可以非常灵活

作者:王春燕
编辑:詹思璇

技术24期:Hive常见的数据错位及修复技巧


技术23期:快速上手webAssembly【实践篇】


想学习更多技术内容
别忘了关注普适极客


好文!点个在看!
文章转载自普适极客,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论