标签:其他 reg sgi dir 多个 text 需要 hbase serve
Memstore存在的意义
HBase在WAL机制开启的情况下,不考虑块缓存,数据日志会先写入HLog,然后进入Memstore,最后持久化到HFile中。HFile是存储在hdfs上的,WAL预写日志也是,但Memstore是在内存的,增加Memstore大小并不能有效提升写入速度,为什么还要将数据存入Memstore中呢?
优化数据的存储,比如一个数据添加后就马上删除了,这样在刷写的时候就可以直接不把这个数据写到HFile上
需要注意一点:数据读取不一定都是先读取Memstore,再读取磁盘。一般在读取HBase数据时,我们会开启缓存机制BlockCache,读取数据时会先读取该缓存,获取不到数据时会读Memstore和HFile。
这也是笔者一直强调为什么HBase数据最终持久化到hdfs上,但读写性能却优于hdfs的主要原因之一:HBase通过多种机制将磁盘随机读写转为顺序读写。
多列族引起的问题和设计
HBase集群的每个region server会负责多个region,每个region又包含多个store,每个store包含Memstore和StoreFile。HBase表中,每个列族对应region中的一个store。默认情况下,只有一个region,当满足一定条件,region会进行分裂。如果一个HBase表中设置过多的列族,则可能引起以下问题:
所以,我们在设计HBase表的列族时,遵循以下几个主要原则,以减少文件的IO、寻址时间:
关联文章:
关注微信公众号:大数据学习与分享,获取更对技术干货
HBase中Memstore存在的意义以及多列族引起的问题和设计
标签:其他 reg sgi dir 多个 text 需要 hbase serve
原文地址:https://www.cnblogs.com/bigdatalearnshare/p/14015140.html