博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hbase的存储模型
阅读量:4217 次
发布时间:2019-05-26

本文共 1716 字,大约阅读时间需要 5 分钟。

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

转载地址:http://ptvmi.baihongyu.com/

你可能感兴趣的文章
ButterKnife 原理解析
查看>>
Android Context 上下文 你必须知道的一切
查看>>
ndk编译问题汇总
查看>>
Android Studio新建类头部注释和添加函数注释模板及快捷键
查看>>
回调函数的小结
查看>>
类成员函数的重载、覆盖和隐藏区别
查看>>
EasyRecovery用法进阶--高阶设置使用技巧
查看>>
用EasyRecovery“监控硬盘”功能检测硬盘问题的方法
查看>>
EasyRecovery---U盘数据恢复技巧
查看>>
EasyRecovery---ppt恢复技巧
查看>>
如何使用EasyRecovery巧妙恢复被误删的办公文档?
查看>>
EasyRecovery,拯救那些遗失的文件
查看>>
EasyRecovery---视频文件恢复技巧
查看>>
剪视频一点都不难,多款超实用剪辑软件全方位评测!
查看>>
简单好用一键恢复丢失办公文档
查看>>
EasyRecovery软件在win10系统中的功能及使用方法介绍(附注册机下载地址)
查看>>
如何用EasyRecovery找回回收站信息(附注册机下载地址)
查看>>
如何用EasyRecovery找回删除的文档(附注册机下载地址)
查看>>
EasyRecovery——一款专业的数据恢复软件
查看>>
除了数据恢复,EasyRecovery还有这样的功能!
查看>>