1、简介
HBase是基于LSM树架构实现的,天生适合写多读少的应用场景。
LSM树本质上和B+树一样,是一种磁盘数据的索引结构。但和B+树不同的是,LSM树的索引对写入请求更友好。因为无论是何种写入请求,LSM树都会将写入操作处理为一次顺序写,而HDFS擅长的正是顺序写(且HDFS不支持随机写),因此基于HDFS实现的HBase采用LSM树作为索引是一种很合适的选择。LSM树的索引一般由两部分组成,一部分是内存部分,一部分是磁盘部分。内存部分一般采用跳跃表来维护一个有序的KeyValue集合。磁盘部分一般由多个内部KeyValue有序的文件组成。
2、keyvalue 存储格式
一般来说,LSM中存储的是多个KeyValue组成的集合,每一个KeyValue一般都会用一个字节数组来表示。这里,首先需要来理解KeyValue这个字节数组的设计。下面是hbase 的 rowkey 组成。
总体来说,字节数组主要分为以下几个字段。其中Rowkey、Family、Qualifier、Timestamp、Type这5个字段组成KeyValue中的key部分。
-
keyLen:占用4字节,用来存储KeyValue结构中Key所占用的字节长度。
-
valueLen:占用4字节,用来存储KeyValue结构中Value所占用的字节长度。文章来源:https://www.toymoban.com/news/detail-802416.html
-
rowkeyLen:占用2字节,用来存储rowkey占用的字节长度。文章来源地址https://www.toymoban.com/news/detail-802416.html
到了这里,关于HBase学习六:LSM树算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!