hbase架构
hbase是按照列存储的稀疏行/列矩阵
hbase支持两种数据版本回收方式:指定个数和指定时间
Hbase架构
关于region
- 每个表最初只有一个
region,当记录数增加到超过某个阈值时,开始分裂成两个region - 物理上所有数据存放在
hdfs,由region服务器提供region的管理 - 一台物理节点只能跑一个
hregionserver - 一个
hregionserver可以管理多个region实例 - 一个
region实例包括hlog日志和存放数据的store -
hmaster作为总控节点 -
zookeeper负责调度
关于hlog
- 用于灾难恢复
- 预写式日志
wal,记录所有更新操作,操作先记录进日志,数据才会写入 - 每个
region服务器只维护一个hlog,来自不同表的region日志是混合在一起的 -
hlog会被定期回滚
关于store
- 每个
region由一个或多个store组成,每个store保存一个列族的所有数据 - 每个
store由一个memstore和零个或多个storefile组成 -
storefile以hfile的格式存储在hdfs上的,这些文件都是b树结构
客户端更新流程
- 先连接有关的
hregionserver,然后向region提交变更 - 提交的数据首先写入
wal(write-ahead log)和memstore - 当
memstore中的数据量达到某个阈值,hregionserver会启动flashcache进程写入storefile - 当
storefile文件的数量增长到一定阈值后,系统会将多个storefile进行合并,在合并过程中会进行版本合并和删除工作,形成更大的storefile - 当单个
storefile大小超过一定阈值后,会把当前的region分割为两个regions,并由hmaster分配到相应的region服务器,实现负载均衡 - 客户端检索数据时,先在
memstore找,找不到再找storefile
关于hmaster
-
hmaster将region分配给region服务器,协调region服务器的负载并维护集群的状态 -
hmaster不会对外提供数据服务,而是由region服务器负责所有regions的读写请求及操作 - 如果
hregionserver发生故障终止后,hmaster会通过zookeeper感知到,并处理相应的log文件,然后重新分配失效的regions -
hmaster还负责管理表的schema和对元数据的操作
关于元数据表
-
.META.:记录了用户表的region信息,.META.可以有多个region -
-ROOT-:记录了.META.表的region信息,-ROOT-只有一个region -
zookeeper中记录了-ROOT-表的location -
.META.表的regions全部保存在内存中 - 客户端会将查询过的位置信息缓存起来,且缓存不会主动失效












网友评论