扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
本篇内容介绍了“本地memstore怎么分配缓冲区”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
专注于为中小企业提供成都网站设计、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业布尔津免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了成百上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
一、 生存期长的keyvalue实例刷写到磁盘中--》老生代堆上生成孔洞-》孔洞越来越多,无法足够大的连续空间分配-》JRE使用 stop-the-world垃圾回收器-》重写整个堆空间,并压缩剩余可用对象
二、 解决以上问题的方法 :
0.92版本后使用 本地memstore分配缓冲区(memstore-local allocation buffer) MSLAB
即,从堆中分配同样大小的对象,当最终被回收时,堆中将留下固定大小的孔洞。
三、配置文件中 配置:
1 通过hbase.hregion.memstore.mslab.enabled 来配置
2 分配缓冲区大小:hbase.hregion.memstore.mslab.chunksize ,默认是2M,且是合理的。
根据自己的keyvalue实例大小来调整。
3 存储缓冲区上边界:hbase.hregion.memstore.mslab.max.allocation 属性,默认256kb,
超过这个值,直接在java堆中申请空间。
四 优缺点:
优点:推迟垃圾回收停顿的发生
缺点:1 浪费堆空间,不能充分利用
2 使用缓冲区需要额外的内存复制工作,比直接使用keyvalues实例
“本地memstore怎么分配缓冲区”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流