HBase系统架构、Hmaster、HRegionServer、Memstore、storeFile、Region

Hbase系统架构

HMaster -- 主节点

作用:

  • 为HRegionRerver分配region
  • 负责HRegionRerver的负载均衡
  • 发现失效的HRegionRerver并重新分配其上的region
  • 管理用户对table的结构增删改操作,这里少了查

HRegionServer -- 从节点

作用:

  • HRegionRerver维护region,处理对这些region的IO请求

    IO请求:包括 读 和 写

    所以在 hbase 中的读写可以不需要 HMaster

  • HRegionRerver负责切分(split)在运行过程中变得过大的region

Memstore 与 storefile

一个region由多个store组成,一个store对应一个CF(列族)store包括位于内存中的memstore和位于磁盘的storefile写操作先写入memstore,当memstore中的数据达到某个阈值(128M),hregionserver会启动flashcache进程写入storefile,每次写入形成单独的一个storefile

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

合并:minor compaction -- 仅仅只是合并 、major compaction -- 在合并过程中会进行版本合并和删除工作

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

客户端检索数据,先在memstore找,找不到再找storefile

Region

HBase 自动把表水平划分成多个区域(region),每个region会保存一个表里面某段连续的数据;每个表一开始默认只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,region就会等分为两个新的region(裂变)。

注意每个region都有 start key 和 end key

一个表中 第一个 region start key 没有限定,最后一个 region end key 没有限定

在创建表时还可以进行一个操作 预分区

根据业务需求 ,提前进行分区

当table中的行不断增多,就会有越来越多的region。这样一张完整的表被保存在多个HRegionServer 上。实现了负载均衡

热点问题:所有的请求都集中在极个别的 HRegionServer 上面

HBase架构图 --- 重要

posted @ 2022-02-26 19:41  赤兔胭脂小吕布  阅读(329)  评论(0编辑  收藏  举报