数据库

首页 » 常识 » 问答 » Hbase的实现原理
TUhjnbcbe - 2025/2/3 3:11:00

Hbase有三大核心组件:库函数、Master服务器、Region服务器

图Hbase核心组件

其作用是链接每个客户端

Master服务器负责分区信息的管理和维护,维护了region服务器的列表。Zookeeper监测到故障region服务器后,会通知Master,因此Master服务器会知道当前Region服务器的工作状态。

Master也负责对region进行分配,一个数据表,会分成多个region,那个region,存储在那台region服务器,由Master做统一分配和管理。

Master也负责对region服务器的负载均衡,由于冷热数据分布不均,导致一些region服务器访问压力过大,一些region服务器访问压力过小,通过对冷热数据的存储调整,可使region服务器负载均衡。

Region服务器负责对数据的存储。

在Hbase中,当一张表越来越大后,就会分成多个region,每个region还会存在不同的region服务器。当客户端获取到region的存储位置后,即可不通过Master服务器,直接和Region服务器完成数据读写操作。

当前一个region大小建议设置为1G-2G,具体大小配置,可基于当前服务器的性能确定。

一个region不会继续进行拆分,并分片存储到不同服务器,除非当前region服务器宕机,否则不会迁移到另外的region服务器。

一台region服务器可存储10-个region,hbase作为分布式数据库,大规模集群可达上万个节点,那么是如何实现数据读取的呢?

Hbase有一个.mata.表,也叫元数据表,这个表由两列组成:regionID和region服务器ID

当数据规模越来越大,region和region服务器越来越大,访问.mata.表的性能就会下降,导致数据读取速度变慢。

Hbase是如何解决这个问题呢?

Hbase会把.mata.表也会分为多个region,存储在不同的region服务器。

.root.表维护了.meta.regionID和region服务器ID的映射关系,这样便于快速找到.meta.表数据。

在zookeeper程序中,写死了-root-表的存储位置,-root-表只有一个region,不会再分裂成多个region。

这种机制称为Hbase的三层寻址机制,就是说通过Hbase访问数据需要经历以下三步:

1、访问zookeeper程序,找到-root-表

2、通过-root-表,找到元数据.meta.表

3、通过.meta.表,找到需访问的数据

图Hbase三层寻址机制

为了提高Hbase的数据访问速度,.meta.表、-root-表都存在内存中,同时hbase支持缓存机制,当经历一遍三层寻址机制后,数据的存储位置就会缓存到客户端。

Hbase如何实现缓存更新呢?

Hbase缓存更新机制被称为惰性机制,其不会主动更新缓存。如果当一台region服务器宕机,其上的region重新分配到其他region服务器,基于原来的缓存,肯定找不到数据,当基于缓存找不到数据时,就重新经历三层寻址机制,再把新的存储位置缓存,把原来的缓存清理掉。

好了,今天的分享就到这,希望对大家有所帮助,感谢

1
查看完整版本: Hbase的实现原理