逻辑结构模型
- 进程角色
- Client:客户端,写的Java程序、hbase shell都是客户端(Flink、MapReduce、Spark)
- HMaster:主要是负责表的管理操作(创建表、删除表、Region分配),不负责具体的数据操作
- HRegionServer:负责数据的管理、数据的操作(增删改查)、负责接收客户端的请求来操作数据
- HBase架构的一些关键概念
- Region:一个表由多个Region组成,每个Region保存一定的rowkey范围的数据,Region中的数据一定是有序的,是按照rowkey的字典序来排列的
- Store:存储的是表中每一个列族的数据
- MemStore:所有的数据都是先写入到MemStore中,可以让读写操作更快,当MemStore快满的时候需要有一个线程定期的将数据Flush到磁盘中
- HFile;在HDFS上保存的数据,是HBase独有的一种数据格式(丰富的结构、索引、DataBlock、BloomFilter布隆过滤器.)
- WAL:WAL预写日志,当客户端连接RegionServer写数据的时候,会先写WAL预写日志,put/delete/incr命令写入到WAL,有点类似于之前Redis中的AOF,当某一个RegionServer出现故障时,还可以通过WAL来恢复数据,恢复的就是MemStore的数据。

RegionServer结构
Region
-
Hbase中,表被划分为很多[Region],并由Region Sever提供服务
-
一张表被分为多个region
-
region根据rowkey去切分,是横向切割

- 每张表的region数

Store
- Region 按列族垂直切分为[Store] , 存储在HDFS在文件中
- Store 是存储列族的

Region 按列族垂直切分
MemStore
- MemStore与缓存内存类似,即给Store(列族)加一层缓存
- 当往HBase中写入数据时,首先是写入到Memstore.
- 每个列族将有一个Memstore.
- 当Memstore存储快满的时候,整个数据将写入到DFS中的HFile中。
StoreFile
- 每当任何数据被写入HBASE时,首先要写入Memstore
- 当Memstore快满时,整个排序的key-value数据将被写入HDFS中的一个新的HFile中
- 写入HFile的操作是连续的,速度非常快(flush)
- 物理上存储的是HFile
WAL
- WAL全称为Write Ahead Log,它最大的作用就是故障恢复
- WAL是HBase中提供的一种高并发、持久化的日志保存与回放机制
- 每个业务数据的写入操作(PUT/DELETE/INCR),都会保存在WAL中心
- 一旦服务器崩溃,通过回放WAL,就可以实现恢复崩溃之前的数据(恢复的对象主要是MemStore)
- 物理上存储是Hadoop的Sequence File