当前位置:   article > 正文

hbase中的数据结构_hbase list数据结构

hbase list数据结构

跳表(skiplist)

hbase的数据是按rowkey有序排列的,需要对新添加的数据进行排序,新添加的数据在内存中会使用java.concurrent.ConcurrentSkiplistMap构建memstore,最终持久化为hfile存到磁盘。

为什么使用skiplist,一方面因为高效,插入操作的时间复杂度为logn,另一方面在写磁盘的时候,从头至尾遍历一遍链表顺序写入磁盘即可。

LSM树 (log structured merge tree)

这里运用的是归并排序的思想,只不过子问题的最底层的数据存在了磁盘上。

Hbase将随机的写入行为,通过在内存中生成的包含部分数据的memstore,最终顺序写入有序数据文件到磁盘,将随机写入转化为了顺序写入。

而数据的可靠性保证,是通过记录写入操作的hlog文件,在异常时进行恢复来保证的,写磁盘的过程也是顺序写,速度很快。

最终的查询过程,乐意类比归并排序的过程,在一个表对应的多个hfile,分别查询想要的结果,再将这些结果进行归并,获取最终想要的结果。

布隆过滤器(bloomfilter)

hbase对数据的读取,是基于block的,查询某个rowkey时,布隆过滤器会告诉我们这个rowkey可能在这个block,或者一定不在这个block。当一定不在时就可以跳过block的读取,节约了时间和IO,当可能存在时再读取到内存执行查找操作。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/725285
推荐阅读
相关标签
  

闽ICP备14008679号