HBASE(四 原理篇)

HBase原理

首先理解四个概念
RowKey colfam cell timestamp

这四个不多说 列式存储 宽表
经典全局图:
HBASE(四 原理篇)

1.HRegionServer
每一台存储数据节点的服务器都是一个HRegionServer
HRegionServer 负责的是region的切割 数据读取等操作
HRegionServer 是有HLogHRegion 组成的 。
2.Region
Region是分布式存储和负载均衡的最小单元 但不是存储的最小单元。
Region是由一个0个或多个Store组成的 。每一个Store对应一个列族 ,所以有几个列族 就有几个Store。
3.Store
Store是存储的最小单元。Store是有一个memStore和0到多个StoreFile组成的。其中memStore是在内存中的,StoreFile是在磁盘上的。
4.HFile
HFile是StoreFile在HDFS上的轻量级存储形式。

写操作:
Client提交一个Put请求到RegionServer,数据首先会写到WAL中
当数据写到WAL之后,数据会写到MemStore中,等待刷新到磁盘中
数据写到MemStore完成之后,RS会给Client发送确认信息

HBASE(四 原理篇)

HBASE(四 原理篇)
读流程

首先扫描BlockCache(读缓存)中寻找row cell,若没有则执行2
扫描MemStore(写缓存)中寻找row cell,若没有则执行3
HBase会使用BlockCache索引和bloom filters来加载那包含目标row cells的HFile到内存

切割和合并
HBASE(四 原理篇)

Client写入 -> 存入MemStore,一直到MemStore满 -> Flush成一个StoreFile,直至增长到一定阈值 -> 出发Compact合并操作 -> 多个StoreFile合并成一个StoreFile,同时进行版本合并和数据删除 -> 当StoreFiles Compact后,逐步形成越来越大的StoreFile ->单个StoreFile大小超过一定阈值后,触发Split操作,把当前Region Split成2个Region,Region会下线,新Split出的2个孩子Region会被HMaster分配到相应的HRegionServer 上,使得原先1个Region的压力得以分流到2个Region上