菜单
本页目录

逻辑结构模型

  • 进程角色
    • 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