简介
hbase为何能如此高效的在海量数据中进行快速读写,和其内存存储结构设计是有必然关系的,理解其存储设计思想,将会非常有助大家对hbase的使用和维护。
存储思想
HBase采用Log Structured Merge Trees(LSM)的存储思想。
LSM树
核心思想的核心就是放弃部分读能力,换取写入的最大化能力。LSM Tree ,这个概念就是结构化合并树的意思,它的核心思路其实非常简单,就是假定内存足够大,因此不需要每次有数据更新就必须将数据写入到磁盘中,而可以先将最新的数据驻留在内存中,等到积累到最后多之后,再使用归并排序的方式将内存内的数据合并追加到磁盘队尾 (因为所有待排序的树都是有序的,可以通过合并排序的方式快速合并到一起)。
简易模型

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

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如何利用LogStructuredMergeTrees(LSM树)的存储思想,在海量数据中实现快速读写。通过理解HBase的存储设计,包括RegionServer、MemStore、HLog、StoreFile和HFile等关键组件的工作原理,读者可以更好地掌握HBase的使用和维护。
202

被折叠的 条评论
为什么被折叠?



