简介

hbase为何能如此高效的在海量数据中进行快速读写,和其内存存储结构设计是有必然关系的,理解其存储设计思想,将会非常有助大家对hbase的使用和维护。

存储思想

HBase采用Log Structured Merge Trees(LSM)的存储思想。

LSM树

核心思想的核心就是放弃部分读能力,换取写入的最大化能力。LSM Tree ,这个概念就是结构化合并树的意思,它的核心思路其实非常简单,就是假定内存足够大,因此不需要每次有数据更新就必须将数据写入到磁盘中,而可以先将最新的数据驻留在内存中,等到积累到最后多之后,再使用归并排序的方式将内存内的数据合并追加到磁盘队尾 (因为所有待排序的树都是有序的,可以通过合并排序的方式快速合并到一起)。

简易模型

hbase存储设计原理

存储模块简介

RegionServer 是hbase存储基本单元。
RegionServer = HLog + HRegion (一个server中可以含多个region)
HRegion = Store + MemStore + HFile (Store是列式结构,就可以代表着列族)
hbase存储设计原理

hbase具体存储实现

hbase存储设计原理

level 0

写 MemStore (内存)+ HLog WAL(Write Ahead Log预写日志,如果系统突然宕机,hbase可以通过WAL读取日志回复系统状态,保证高可用)。实现低延迟,实时交互。此时hbase中的数据状态是不可靠数据。

level 1

MemStore达到预值后会刷写文件成storeFile。

level 2

compaction(合并),操作将文件合并。storeFile采用多路归并算法合并成写入HFile,HFile为hbase最小存储单元,保存在hdfs上成为可靠数据。compaction分为minor和major类似于虚拟机GC,major比较耗时和资源。

hbase存储设计原理

相关文章: