Hbase的存储模型

LSM思想:

LSM的基本思想是将修改的数据保存在内存,达到一定数量后在将修改的数据批量写入磁盘,在写入的过程中与之前已经存在的数据做合并。同B树存储模型一样,LSM存储模型也支持增、删、读、改以及顺序扫描操作。LSM模型利用批量写入解决了随机写入的问题,虽然牺牲了部分读的性能,但是大大提高了写的性能.

因为小树先写到内存中,为了防止内存数据丢失,写内存的同时需要暂时持久化到磁盘,对应了HBase的MemStore和HLog

MemStore上的树达到一定大小之后,需要flush到HRegion磁盘中(一般是Hadoop DataNode),这样MemStore就变成了DataNode上的磁盘文件StoreFile,定期HRegionServer对DataNode的数据做merge操作,彻底删除无效空间,多棵小树在这个时机合并成大树,来增强读性能。

MemStore的Flush过程:

​ 在Hbase的写入过程中,首先追加到HLOG上,来保证数据的可靠性,随后append到MemStore上,当MemStore写满了之后会进行Flush过程,Flush过程中Hbase会开启一个新的MemStore接收新的写入,Flush会产生一个新的HFile到HDFS上,当Hfile数量和大小达到一定程度时,已经大大的影响到了查询性能,随后会进行Compact操作。

Compact过程:

随着MemStore的不断Flush,在HDFS上会形成越来越多的小文件,文件数量过多会大大的降低查询效率,Compact过程会尽可能的将它们合并成规模更少但是更大的文件
合并过程又分为minor compact和major的compact。
minor compact:主要是将小于一定阈值的文件合并成更大的文件。
major compact:主要是将所有的文件都合并成一个文件。
文件合并之后会大大的提高查询效率,但是由于合并过程中会读取全量的数据,这样会大量的占用磁盘的IO,导致查询效率大幅下降,甚至不可用。

Split过程:

​ 当一个Region的大小达到一定程度的时候,会进行Region的Split过程,Split过程中Region会进行下线操作,此时不响应任何请求,直到Split过程结束。多列族且数据不均匀的情况会导致,大列族触发了Split,尽管小列族的数据很小,但是依然会进行split导致数据不均,同时大列族的flush会带动小列族的flush,导致反复的IO,十分影响效率,久而久之会严重的影响Scan查询效率。

Hbase对查询的优化:

Server端缓存——BlockCache
一个Hbase的查询请求首先会先到Memstore中查数据,查不到就到BlockCache中查,再查不到就会到磁盘上读,BlockCache采用LRU机制,这样相当于对常用数据进行缓存,提高查询效率,但是在进行Scan的时候尽量避免使用cache,因为这样会大大的降低查询效率,例如MapReduce在做全表Scan的时候一定要关闭cache。
多File的选择——Bloom Filter
​ Hbase在HDFS上存储可能会有多个文件,在没有合并的情况下,各个File之间Rowkey索引可能互有交集,查询时最坏情况下要遍历全部文件,这样就大大的降低了查询效率,Hbase提供了Bloom Filter来实现快速的定位目标记录所在的文件。
​ Bloom Filter可以保守的确定一条数据在不在一个集合中,如果Bloom Filter认为一条数据在一个文件中,但事实上不一定在。但是Bloom Filter认为不在那么该数据一定不在。
​ Bloom Filter的原理使用一个十分大的二进制数组将File中的所有数据进行多种Hash算法hash到这个二进制数组上。当查询到来时,对查询进行同样的Hash处理,该结果在该File中,那么就判断该数据在这个集合中,但是由于Hash冲突的存在,这种判断的正确性不能100%保证,但是也能帮我们挡住大量的请求了。


链接:https://www.jianshu.com/p/bd3588898a3f

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值