MemStore作用及flush过程

自己总结提示:

要理解Metastore是什么,需要了解下HBASE写入数据的过程。

1. 当RegionServer收到写请求,他会把数据丢到相应的Region里。

2. 每个Region里面的结构是这样的,Region中 每个Column Family对应一个HStore。

Hstore里面又分为MemStore和HFile,MemStore的作用就是先把数据写到这里,这是一个内存级的缓存,

在这里你可以对数据按照Row Key进行排序(因为写入hdfs的过程中是顺序读写 无法排序的),排序之后这些数据才能写入

hdfs。

3. MemStore满了,flush到HFile中,每一个Column Family的数据都会创建一个新的HFile。

4.HFile是最终写入hdfs的格式

 

 

除了解决“无序”问题外,Memstore还有一些其他的好处,例如:

  • 作为一个内存级缓存,缓存最近增加数据。一种显而易见的场合是,新插入数据总是比老数据频繁使用。
  • 在持久化写入之前,在内存中对Rows/Cells可以做某些优化。比如,当数据的version被设为1的时候,对于某些CF的一些数据,Memstore缓存了数个对该Cell的更新,在写入HFile的时候,仅需要保存一个最新的版本就好了,其他的都可以直接抛弃。

有一点需要特别注意:每一次Memstore的flush,会为每一个CF创建一个新的HFile。 在读方面相对来说就会简单一些:HBase首先检查请求的数据是否在Memstore,不在的话就到HFile中查找,最终返回merged的一个结果给用户。

 

 

 

 

 

 

 

以下为参考资料

————————————————————————————

关于MemStore的刷新方式

2017年05月09日 21:13:24 追寻北极 阅读数:1337更多

个人分类: architecture

MemStore是HBase非常重要的组成部分,深入理解MemStore的运行机制、工作原理、相关配置,对HBase集群管理以及性能调优有非常重要的帮助。

HBase Memstore

首先通过简单介绍HBase的读写过程来理解一下MemStore到底是什么,在何处发挥作用,如何使用到以及为什么要用MemStore。

图一:Memstore Usage in HBase Read/Write Paths

当RegionServer(RS)收到写请求的时候(write request),RS会将请求转至相应的Region。每一个Region都存储着一些列(a set of rows)。根据其列族的不同,将这些列数据存储在相应的列族中(Column Family,简写CF)。不同的CFs中的数据存储在各自的HStore中,HStore由一个Memstore及一系列HFile组成。Memstore位于RS的主内存中,而HFiles被写入到HDFS中。当RS处理写请求的时候,数据首先写入到Memstore,然后当到达一定的阀值的时候,Memstore中的数据会被刷到HFile中。

用到Memstore最主要的原因是:存储在HDFS上的数据需要按照row key 排序。而HDFS本身被设计为顺序读写(sequential reads/writes),不允许修改。这样的话,HBa

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值