Hbase(二)hbase  架构

1.2 hbase 架构

目录表 hbase:meta

目录表 hbase:meta 作为 HBase 表存在,并从 hbase shell 的 list(类似 show tables)命令中过滤掉,但实际上是一个表,就像任何其他表一样。

hbase:meta 表(以前称为.META.),保有系统中所有 region 的列表。hbase:meta位置信息存储在 zookeeper 中。hbase:meta 表是所有查询的入口

表结构如下:

key:
region 的 key,结构为:[table],[region start key,end key],[region id]
values:
info:regioninfo(当前 region 序列化的 HRegionInfo 实例)
info:server(包含当前 region 的 RegionServer 的 server:port)
info:serverstartcode(包含当前 region 的 RegionServer 进程的开始时间)

当表正在拆分时,将创建另外两列,称为 info:splitA 和 info:splitB。 这些列代表两个子 region。 这些列的值也是序列化的 HRegionInfo 实例。区域分割后,将删除此行。

a,,endkey
a,startkey,endkey
a,startkey,

空键用于表示表开始和表结束。具有空开始键的 region 是表中的第一个 region。如果某个 region 同时具有空开始和空结束键,则它是表中唯一的 region

1.2.1 Client

hbase:meta tablea,,100,node2
hbase:meta tablea,101-200,node3
hbase:meta tablea,201-300,node5
hbase:meta tablea,301-400,node237
hbase:meta tablea,401-500,node24
hbase:meta tablea,501,,node896

Client->zookeeper(hbase:meta)->root region ( tablea,node3 tableb,node4 )->meta region-> regionserver(数据)

包含访问 HBase 的接口并维护 cache 来加快对 HBase 的访问。HBase 客户端查找关注的行范围所在的 regionserver。它通过查询 hbase:meta 表来完成此操作。在找到所需的 region 之后,客户端与提供该 region 的 RegionServer 通信,而不是通过 Master,并发出读取或写入请求。此信息缓存在客户端中,以便后续请求无需经过查找过程。如果Master 的负载均衡器重新平衡或者由于 regionserver 宕机,都会重新指定该 region 的regionserver。客户端将重新查询目录表以确定用户 region 的新位置。

通过 Admin 进行管理功能的实现。

1.2.2 Zookeeper

1. 保证任何时候,集群中只有一个活跃 master

2. 存贮所有 Region 的寻址入口。 root region 的地址 hbase:meta 表的位置

3. 实时监控 Region server 的上线和下线信息。并实时通知 Master

4. 存储 HBase 的 schema 和 table 元数据

1.2.3 Master

1. 为 Region server 分配 region

2. 负责 Region server 的负载均衡

3. 发现失效的 Region server 并重新分配其上的 region

4. 管理用户对 table 的增删改操作 不是数据的增删改(DML) DDL理

概括:管理 region  的分配 和 管理对表的操作

1.2.4 RegionServer

1. Region server 维护 region,处理对这些 region 的 IO 请求

2. Region server 负责切分在运行过程中变得过大的 region

1.2.5 Region

1. HBase 自动把表水平划分成多个区域(region),每个 region 会保存一个表里面某段连续的数据 (每条记录都有一个行键,按照行键字典序排列)

2. 每个表一开始只有一个 region,随着数据不断插入表,region 不断增大,当增大到一个阈值的时候,region 就会等分会两个新的 region(裂变)

3. 当 table 中的行不断增多,就会有越来越多的 region。这样一张完整的表被保存在多个 Regionserver 上。

4. 一个 region 由多个 store 组成,一个 store 对应一个 CF(列族)

5. HRegion 是 HBase 中分布式存储和负载均衡的最小单元。最小单元就表示不同的HRegion 可以分布在不同的 HRegion server 上。HRegion 由一个或者多个 Store
组成,每个 store 保存一个 columns family。每个 Store 又由一个 memStore 和0 至多个 StoreFile 组成。如图:StoreFile 以 HFile 格式保存在 HDFS 上。

1.2.6 Memstore 与 storefile

1. store 包括位于内存中的 memstore 和位于磁盘的 storefile

2. 写操作先写入 memstore,当 memstore 中的数据达到某个阈值,hregionserver 会启动 flashcache 进程写入 storefile,每次写入形成单独的一个 storefile。

3. 当 storefile 文件的数量增长到一定阈值后,系统会进行合并(minor、major compaction),在合并过程中会进行版本合并和删除工作(majar),形成更大的
storefile

4. 当一个 region 所有 storefile 的大小和数量超过一定阈值后,会把当前的 region 分割为两个,并由 hmaster 分配到相应的 regionserver 服务器,实现负载均衡

5. 客户端检索数据,先查找 memstore,再 blockcache(查询缓存),找不到再找 storefile

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

plenilune-望月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值