非关型数据库之Hbase(三)

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 非关型数据库之Hbase(三)

5.2 Region再细分

       Hbase的核心模块是RegionServer,RegionServer又由HLog和Region构成,Region存储着一系列连续的数据集。Region对应着和多个的Store,每个Store对应着表中的一个列族的存储,Store又是由一个MemStore和零到多个的StoreFile组成,StoreFile的底层是用HFile实现,也可以说StoreFile就是HFile。

image.png

                     


5.2.1 Hbase写数据

(获取元数据)客户端访问Zookeeper,从Meta表中得到数据写入的Region和RegionServer的相关信息

(两次写信息)客户端按照Zookeeper返回的相关信息,直接访问RegionServer把数据分别写入HLog和MemStore。

(持久化数据)当MemStore的存储量达到一定阈值(默认64M)时,会把数据写入磁盘文件StoreFile中,并在HLog中写入一个标记表示MemStore中的缓存数据写入到StoreFile中。如果MemStore中的数据丢失,则可以在HLog中恢复。

(StoreFile合并分裂)StoreFile文件的数量达到一定的数量时,会触发合并成一个大的StoreFile,当StoreFile的文件大小超过一定的阈值时,大StoreFile会分裂成两个StoreFile。同时,当前父Region会分裂成两个子Region,父Region下线,两个子Region被Master分配到相应的RegionServer(父Region拆分的原因参考 5.4Region拆分)。

image.png

5.2.2 Hbase读数据

(获取元数据)客户端访问Zookeeper,从Meta表中得到读取数据的Region和RegionServer的相关信息

(发送请求)客户端向对应的RegionServer发送读取数据请求

(查找数据)RegionServer在就收到请求消息之后,现在MemStore中查找数据,如果没有就到StoreFile中读取,最后将数据返回给客户端。

5.2.3 HFile的合并(Minor|Major)

Minor合并(满足条件的小HFile进行合并)


       执行合并时,Hbase将多个小HFile的内容读出并写入到一个新的文件中,然后激活新文件,旧文件标记为删除,被标记后的旧文件只有在下一次Major合并时才会被删除,在此之前仍会出现在HFile中。HFile的Minor合并是触发式的,触发条件很多,比如在将MemStore中的数据刷新到HFile中时会申请对符合条件的HFile进行合并,定期合并等。除此之外,对选择进行合并的HFile文件也是有条件的,条件如下:

image.png



也就是说,一次Minor合并的HFile文件的个数在3~10个之间。


Major合并(无差别合并)


       Major合并会对Store中的所有HFile文件进行无差别的合并,甚至有时会将整个表中同一列族的HFile进行合并,这是一个耗时且耗费资源的操作,很影响集群的性能。故一般情况下都只做Minor合并,不做甚至有些集群干脆就禁止Major合并,只有在集群负载较小时才进行手动的Major合并,或者配置Major的合并中期,默认为7天。


5.3 WAL机制

       WAL就是(Write Ahead Log),字面翻译就是预写日志文件机制。如下图所示,每个RegionServer中的所有Region共用一个HLog文件,HLog就是上面说到的预写日志文件,也就是说,每当客户端更写数据必须先写入到HLog文件后才能被写入到MemStore中。


       故障转移:Zookeeper会实时监控每个Regionserver的状态,当某个RegionServer故障时,RegionServer在Zookeeper上的临时节点就会过期,Zookeeper会首先通知Master,Master会第一时间处理该RegionServer上的HLog文件,对其按照Region进行拆分并放到相应Region的目录下,等到Region被重新分配到可用的RegionServer上时,按照Region目录下的HLog进行数据恢复。


image.png


5.4 Region拆分

       一旦Region的负载过大或者超过阈值时(Region中最大的Store的大小大于设置的阈值时就会触发Region拆分),它就会被拆分成两个新的Region,这个过程是由RegionServer来完成的,具体流程如下:


(下线并阻止请求)下线需要拆分的Region,阻止所有对该Region的客户端请求,Master检测到Region的状态为SPLITING。

(建立引用文件并指向)在父Region的下面建立两个引用文件,分别指向父Region的首行与末行,此时并不会开始复制数据。

(建立目录并复制)在HDFS上建立两个子Region的目录,分别复制上一步建立的引用文件,每个子Region分别占用父Region的一半数据,复制完成后删除两个引用文件。

(更新Meta表元数据)完成子Region的创建后,向Meta表发送新产生的两个Region的元数据信息,删除父Region的元数据信息。

(更新状态)将Region的拆分信息更新到HMaster中,并且每个Region进入可用状态。

5.5 Region合并

(发送请求)客户端发送Region合并请求给Master。

(聚堆并发送请求)Master在RegionServer上将Region移到一起,并发起一个Region合并操作的请求。

(下线并合并)RegionServer将准备合并的Region下线,然后进行合并。

(更新元数据)从Meta表上删除被合并的Region的元数据,并写入新的Region的元数据。

(更新状态及信息)新的Region设置上线,同时更新Region信息到Master。

       Region合并的必要性:Region过多会导致Meta表过大,Zookeeper管理不过来,从而影响客户端的请求响应。


相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
5月前
|
分布式计算 Java Hadoop
杨校老师课堂之分布式数据库HBase的部署和基本操作
杨校老师课堂之分布式数据库HBase的部署和基本操作
60 0
|
3月前
|
存储 SQL 分布式数据库
|
5月前
|
存储 NoSQL Java
HBase是一个开源的、分布式的、面向列的NoSQL数据库系统
HBase是一个开源的、分布式的、面向列的NoSQL数据库系统
97 0
|
5月前
|
存储 分布式计算 Hadoop
【大数据】分布式数据库HBase下载安装教程
【大数据】分布式数据库HBase下载安装教程
158 0
|
5月前
|
存储 缓存 大数据
【大数据】分布式数据库HBase
【大数据】分布式数据库HBase
112 0
|
2月前
|
分布式计算 Java Hadoop
java使用hbase、hadoop报错举例
java使用hbase、hadoop报错举例
92 4
|
1月前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
70 4
|
1月前
|
SQL 分布式计算 Hadoop
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
33 3
|
1月前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
57 3
|
1月前
|
SQL 分布式计算 Hadoop
Hadoop-34 HBase 安装部署 单节点配置 hbase-env hbase-site 超详细图文 附带配置文件
Hadoop-34 HBase 安装部署 单节点配置 hbase-env hbase-site 超详细图文 附带配置文件
75 2
下一篇
无影云桌面