Hbase系统架构
Hbase系统架构
一、Hbase是主从结构
主节点:HMaster
(1)为Regionserver分配region(创建表默认有一个region)
(2)负责Regionserver的负载均衡
(3)发现失效的Regionserver并重新分配其上的region
(4)管理用户对table结构的增删改操作
从节点:HRegionServer
(1)Regionserver维护region,处理对这些region的IO请求
(2)Regionserver负责切分在运行过程中变得过大的region(split操作)
注意:IO请求包括读(查)、写的操作
二、Region的详细介绍
1、HBase自动把表水平划分成多个区域(region),每个region会保存一个表里面某段连续的数据;
第一个region没有start rk,最后一个region没有end rk,
中间的region既含有start rk,又含有end rk
2、每个表一开始默认只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,
region就会等分会两个新的region(裂变)。
当table中的行不断增多,就会有越来越多的region。这样一张完整的表被保存在多个Regionserver 上。
三、Memstore 与 storefile
每个从节点
Hregionserver
包含若干个HRegion
每个
HRegion
包含若干个Store
每个
Store
包含若干个memstore
、storefile
1、一个region由多个store组成,一个store对应一个CF(列族);
store包括位于内存中的memstore和位于磁盘的storefile;
写操作先写入memstore,当memstore中的数据达到某个阈值,
HRegionserver会启动flashcache进程写入storefile,每次写入形成单独的一个storefile.
2、每次写到128M,就会生成一个storefile,当storefile文件的数量增长到一定阈值后,
系统会进行合并(minor compaction、major compaction),(minor compaction只能
进行一些简单的合并),在合并过程中会进行版本合并和删除工作(由major compaction完成),
形成更大的storefile
3、随着不断地合并,storefile会越来越大,当一个region所有storefile的大小和数量超过一定阈值后,
就会进行切分,会把当前的region分割为两个,并由 hmaster分配到相应的Regionserver服务器,
实现负载均衡
4、客户端检索数据,先在memstore找,找不到再找storefile
四、Hbase架构图
1、HRegionserver负责管理HRegionn,每个HRegionserver有一个Blockcache,
Blockcache作为缓存,加速查询请求
2、每个HRegionserver有一个HLOG,HLOG负责操控日志文件
3、每个HRegionserver包含若干个HRegion,
每个HRegion包含若干个Store,
每个Store对应着一个列簇(cf)