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 上面