Hbase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用Hbase技术可在廉价PC Server上搭建起大规模集群。它是一个可以随机访问的存储和检索数据的平台,允许动态的灵活的数据模型。
一、Hbase架构
Hbase主要由Zookeeper、HMaster和HRegionServer组成。
1.ZooKeeper可避免Hmaster的单点故障,其master选举机制可保证一个master提供服务。
2.Hmaster管理用户对表的增删改查操作,管理HRegionServer的负载均衡。并可调整Region的分布,在HRegionServer退出时迁移其内的HRegion到其他HRegionServer上。
3.HRegionServer存放和管理本地HRegion(其数量可通过配置文件更改)。HRegionServer是Hbase中最核心的模块,其主要负责响应用户的I/O请求,向HDFS文件系统中读写数据。HRegionServer内部管理了一系列HRegion对象,每个HRegion对应一个Region,HRegion中由多个Store组成。每个Store对应了Column Family的存储。
4.Storefile、Hfile存储hadoop下的二进制文件,Storefile是对Hfile的轻量级封装。
二、逻辑模型
其中行键和列按字典序排列,值的版本则按时间倒序排列。
三、Hbase读写流程
3.1 Hbase写数据流程
(1)根据Zookeeper找到-ROOT-表,进而找到.META.表,.META.表中存储了相应Region位置。Client将据此访问HRegionServer和相应的Region。
MemStore是内存里的写入缓冲区,HBase中数据在永久写入磁盘之前在这里积累。当MemStore填满之后,其中的数据会刷写到硬盘。若发生服务器宕机,内存中没有写入硬盘的数据就会丢失。当开启了预写式日志,重新启动时则可根据预写日志恢复数据。
(2)当StoreFile较多的时候会触发Compaction过程,将多个StoreFile合成一个StoreFile。
Compaction主要作用为合并文件,以及清除过期数据、多余版本的数据,提高读写数据的效率。HBase根据合并规模将Compaction分为了两类:MinorCompaction和MajorCompaction。
1.Minor Compaction指小合并操作,用来对部分文件的合并操作,并设置TTL过期版本清理,但不做任何删除数据、多版本数据的清理操作。
2.Major Compaction是指将所有的StoreFile合并成一个StoreFile,最终整合并处理一个文件。
3.2 Hbase读数据流程
在找到region后,首先在MemStore中读,若没有数据则进入BlockCache(读缓存)中进行读操作。若在BlockCache中没有找到数据,则将在磁盘中寻找读取数据。