HBase中的基础数据结构与算法——HBase原理与实践读书笔记(2)

引文
列簇本质上是一颗LSM树。
LSM树分为内存部分和磁盘部分。
内存部分是一个维护有序数据集合的数据结构,可选择平衡二叉树、红黑树、跳跃表等。HBase选择了跳跃表,理由是并发性更好。
磁盘部分由独立的文件组成,文件由独立的数据块组成,为了减少IO耗时(磁盘寻道及数据读取),HBase使用了布隆过滤器来判断数据是否存储在数据块中。

跳跃表(SkipList)
高效实现插入、删除、查找的内存数据结构,复杂度为O(logN)。
与红黑树及其他的二分查找树相比,跳跃表的优势在于实现简单,并发场景下加锁粒度更小,从而可以实现更高的并发性。
被广泛用于KV数据库中,如Redis、LevelDB、HBase。

LSM树(Log-Structured Merge-Tree)
LSM树本质上和B+树一样是一种磁盘数据的索引结构,区别在于,LSM树的索引对写入更友好。
任何写入请求都会被LSM树处理为一次顺序写,而HDFS擅长于顺序写(不支持随机写)。
索引由内存和磁盘两部分构成。内存部分由跳跃表来维护,磁盘部分由有序的KV文件构成。
每个KV由一个字节数组表示,该数组详见p17。
Region中的MemStore就是一个跳跃表,当MemStore过大时会flush形成有序文件HFile,此时所有IO都是顺序IO,速度最快。都是一旦有读请求,则需要将这些HFile进行多路归并。
归并的方式有两种:minor compact和major compact,前者一次归并少数文件,后者一次性将所有文件归并成一个文件。

布隆过滤器(Bloom Filter)
用于高效判断元素是否存在于集合中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值