非关型数据库之Hbase(二)

本文涉及的产品
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
注册配置 MSE Nacos/ZooKeeper,182元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 非关型数据库之Hbase(二)

3 Hbase组件及其功能

image.png


3.1 客户端

客户端包含访问Hbase的接口,是整个Hbase系统的入口,使用者通过客户端操作Hbase,客户端使用Hbase的RPC机制与HMaster和RegionServer进行通信。


3.2 Zookeeper

Zookeeper是一个高性能、集中化、分布式的应用程序协调服务,主要用来解决分布式应用中用户遇到的数据管理问题。在Hadoop中Zookeeper主要用于实现高可靠性(High Availability,HA),包括HDFS的NameNode和YARN的ResourceManager的HA。以HDFS为例,NameNode作为HDFS的主节点,负责管理文件系统的命名空间以及客户端对文件的访问,同时还需要监控整个HDFS中每个DataNode的状态,实现负载均衡和容错。为了实现HA需要由多个NameNode并存,一个处于活跃状态其他则是备用状态,当处于活跃状态的NameNode无法正常工作时,处于备用状态的节点会通过竞争选举产生新的活跃节点。Zookeeper在Hbase中的功能如下:


Master选举

       与HDFS中的竞选机制一样,Hbase中有多个Master并存,但只有一个HMaster处于活跃状态,当处于活跃状态的HMaster无法正常工作时,从其余备用Master中通过选举出一个新的HMaster,保证集群的高可靠性。


系统容错

       在Hbase启动时,每个RegionServer在加入集群时都需要到Zookeeper中进行注册,创建一个状态节点,Zookeeper会实时监控每个RegionServer状态,当某个RegionServer挂掉时,Zookeeper会因为一段时间内没有接收到其心跳信息而删除该RegionServer对应的节点,并给HMaster发送节点删除通知,HMaster得知有RegionServer断开,会立即开启RegionServer容错机制参考博客


Region元数据管理

       在Hbase集群中,Region元数据被存储在Zookeeper中的Meta表里。每次客户端发起新的请求时,需要先查询Meta表中的Region的位置,当Region发生任何变更时,就能通过Zookeeper的Mate表来感知这一变化,保证客户端能够获取到正确的Region元数据信息。


Region状态管理

       Hbase中的Region会经常发生变更,其原因可能是系统故障、配置修改、Region的分裂及合并。只要Region发生任何变化,就需要使集群中的所有节点都知晓,然而集群中的Region数量会达到十万级甚至更多,如果交由Hbase处理则负担过大,所以只能依赖Zookeeper来完成。


提供Meta表存储位置

       Meta表中存储的数据库信息、列族信息、列族存储位置信息都属于元数据,而Mate表的位置入口由Zookeeper提供。


3.3 HMaster

管理用户对表的增、删、改、查操作。HMaster提供了对所有元数据增删改查的接口,便于用户与Hbase进行交互。

管理RegionServer的负载均衡,调整Region的分布。

Region的分配与移除。

处理RegionServer的故障转移。

3.4 RegionServer

       RegionServer主要负责响应用户的请求,向HDFS读写数据,一般在分布式集群中,RegionServer运行在DataNode服务器上,实现数据的本地性。


处理分配给它的Region

处理客户DAU你的读写请求

刷新缓存到HDFS

处理Region分片

执行压缩

4 Hbase数据模型及Hbase Shell

Hbase数据模型及Hbase Shell_扎哇太枣糕的博客-CSDN博客

5 Hbase原理实现

5.1 Region定位

5.1.1 Region

       在Hbase中,表中的行都是按照RowKey的字典顺序进行排序,表在行的方向上被分割成多个Region。每一张表一开始就只有一个Region,随着数据的不断插入,Hbase会根据一定的规则将表进行水平拆分最终形成多个Region。Region过多一台机器无法存储的下时,可分布式存储到多台机器上,HMaster将不同的Region分配到不同的RegionServer上。

image.png

             


        客户端在对表彰数据进行增删改查时需要知道数据存储在哪个RegionServer上,这个查找Region的过程就叫做Region定位。Region标识符可以唯一标志一个Region,Region标识符 = 表名+起始行键+时间戳+RegionID,其中RegionID等于(表名+起始行键+时间戳)进行MD5加密。其中第一个Region没有首行,最后一个Region没有末行。


5.1.2 Meta表

       Meta映射表的每个条目包含两项内容:Region标识、RegionServer标识,该条目表示了Region与RegionServer之间的对应关系,可以让用户知道该Region存储在哪个RegionServer上。总而言之,Meta表记录了元数据信息,使Region的定位变得精准且快速。


5.1.3 Region查找

       早期的Region查找使用三层架构:首先访问zookeeper的/hbase/root-region-server节点来得知ROOT表在哪个RegionServer上,然后访问ROOT表获取数据所在Meta表以及Meta表所在RegionServer的位置,接着访问META表找到数据所在的Region去访问。后来改为二层架构:客户端先通过查找ZooKeeper的Meta表,获取到查询的数据的Region元数据信息,按照元数据信息获取到相应的数据。


参考博客:HBase查询机制--Region定位_Fys的博客-CSDN博客_查看hbase 表的region


相关文章
|
5月前
|
SQL 存储 分布式数据库
分布式存储数据恢复—hbase和hive数据库数据恢复案例
分布式存储数据恢复环境: 16台某品牌R730xd服务器节点,每台服务器节点上有数台虚拟机。 虚拟机上部署Hbase和Hive数据库。 分布式存储故障: 数据库底层文件被误删除,数据库不能使用。要求恢复hbase和hive数据库。
204 12
|
分布式计算 Java Hadoop
杨校老师课堂之分布式数据库HBase的部署和基本操作
杨校老师课堂之分布式数据库HBase的部署和基本操作
155 0
|
存储 SQL 分布式数据库
深入解析HBase与关系数据库的关键差异
【8月更文挑战第31天】
296 0
|
存储 NoSQL Java
HBase是一个开源的、分布式的、面向列的NoSQL数据库系统
HBase是一个开源的、分布式的、面向列的NoSQL数据库系统
256 0
|
存储 分布式计算 Hadoop
【大数据】分布式数据库HBase下载安装教程
【大数据】分布式数据库HBase下载安装教程
521 0
|
4月前
|
分布式计算 Ubuntu Hadoop
Ubuntu22.04下搭建Hadoop3.3.6+Hbase2.5.6+Phoenix5.1.3开发环境的指南
呈上,这些步骤如诗如画,但有效且动人。仿佛一个画家在画布上描绘出一幅完美的画面,这就是你的开发环境。接下来,尽情去创造吧,祝编程愉快!
237 19
|
分布式计算 Java Hadoop
java使用hbase、hadoop报错举例
java使用hbase、hadoop报错举例
252 4
|
11月前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
238 4
|
11月前
|
SQL 分布式计算 Hadoop
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
112 3
|
11月前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
147 3