HBase的3个重要机制

举报
大数据梦想家 发表于 2021/09/28 22:54:46 2021/09/28
【摘要】         本篇博客,小菌为大家带来的是关于HBase的3个重要机制。     ...

        本篇博客,小菌为大家带来的是关于HBase的3个重要机制。
        

1.flush 机制

1.(hbase.regionserver.global.memstore.size) 默认;堆大小的40%
regionServer的全局memstore的大小,超过该大小会触发flush到磁盘的操作,默认是堆大小的40%,而且regionserver级别的flush会阻塞客户端读写

2.(hbase.hregion.memstore.flush.size) 默认:128M
单个region里memstore的缓存大小,超过那么整个HRegion就会flush。

3.(hbase.regionserver.optionalcacheflushinterval) 默认:1h
内存中的文件在自动刷新之前能够存活的最长时间

4.hbase.regionserver.global.memstore.size.lower.limit 默认:堆大小 * 0.4 * 0.95
有时候集群的“写负载”非常高,写入量一直超过flush的量,这时,我们就希望memstore不要超过一定的安全设置。在这种情况下,写操作就要被阻塞一直到memstore恢复到一个“可管理”的大小, 这个大小就是默认值是堆大小 * 0.4 * 0.95,也就是当regionserver级别的flush操作发送后,会阻塞客户端写,一直阻塞到整个regionserver级别的memstore的大小为 堆大小 * 0.4 *0.95为止

5.(hbase.hregion.preclose.flush.size) 默认为:5M
当一个 region 中的 memstore 的大小大于这个值的时候,我们又触发 了 close.会先运行“pre-flush”操作,清理这个需要关闭的memstore,然后 将这个 region 下线。当一个 region 下线了,我们无法再进行任何写操作。 如果一个 memstore 很大的时候,flush 操作会消耗很多时间。“pre-flush” 操作意味着在 region 下线之前,会先把 memstore 清空。这样在最终执行 close 操作的时候,flush 操作会很快。

6.(hbase.hstore.compactionThreshold) 默认:超过3个
一个store里面允许存的hfile的个数,超过这个个数会被写到新的一个hfile里面 也即是每个region的每个列族对应的memstore在fulsh为hfile的时候,默认情况下当超过3个hfile的时候就会 对这些文件进行合并重写为一个新文件,设置个数越大可以减少触发合并的时间,但是每次合并的时间就会越长。

        

2、compact机制

详细请见《HBase官方文档》
主要就是当小的storeFile文件达到三个,会合并成大的Storefile文件。并且清理过期的数据,包括删除的数据,将数据的版本号保存为3个。

        

3.split机制

当Region达到阈值,会把过大的Region一分为二。
默认一个HFile达到10Gb的时候就会进行切分。
        
        
        

总结

Flush 机制

hbase.regionserver.global.memstore.size: 默认;堆大小的40%

regionServer的全局memstore的大小(多个CF的memstore-多个region),超过该大小会触发flush到磁盘的操作,会阻塞客户端读写flush将所有的memstore全部flush.hbase不建议配置过多列族:过多的列族会消耗大量的内存,同时数据在flush时消耗磁盘IO.一个regionserver续写操作可用堆内存的80%,读取占用40% ,写入占用40%。这两个参数直接影响hbase读写性能。

什么时候触发flush

hbase.hregion.memstore.flush.size:默认:128M(单个region里memstore的缓存大小)
hbase.regionserver.optionalcacheflushinterval: 默认:1h
hbase.regionserver.global.memstore.size.lower.limit: 默认:堆大小 0.95倍
hbase.hregion.preclose.flush.size:默认为:5M 提前进行flush.(先flush一小部分,等后面数据达到阈值在flush后
面的数据) 好处:比一次flush效率高

什么时候触发合并
hbase.hstore.compactionThreshold: 默认:3个 (flush文件的数量超过3个进行合并)
        
compact机制
        
默认3个
小的storeFile 文件达到3个,合并成大的storeFile文件。
        
split机制
        
默认一个HFile达到10Gb的时候就会进行切分

好了本次的分享就到这里了,对大数据技术感兴趣的朋友记得点赞关注小菌哟(^U^)ノ~YO
        
        
        
        
        

在这里插入图片描述

文章来源: alice.blog.csdn.net,作者:大数据梦想家,版权归原作者所有,如需转载,请联系作者。

原文链接:alice.blog.csdn.net/article/details/103589855

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。