Hbase中Region/Store/StoreFile/Hfile之间的关系

Region/Store/StoreFile/Hfile之间的关系

 

原文地址:

https://blog.csdn.net/lijingjingchn/article/details/89924181

1. Region
table在行的方向上分隔为多个Region。Region是HBase中分布式存储和负载均衡的最小单元,即不同的region可以分别在不同的Region Server上,但同一个Region是不会拆分到多个server上。

Region按大小分隔,表中每一行只能属于一个region。随着数据不断插入表,region不断增大,当region的某个列族达到一个阈值(最新版本默认10G,由参数hbase.hregion.max.filesize配置)时就会分成两个新的region。

 

2. Store
每一个region有一个或多个store组成,至少是一个store,hbase会把一起访问的数据放在一个store里面,即为每个ColumnFamily建一个store(即有几个ColumnFamily,也就有几个Store)。一个Store由一个memStore和0或多个StoreFile组成。

HBase以store的大小来判断是否需要切分region。

 

3. MemStore
memStore 是放在内存里的。保存修改的数据即keyValues。当memStore的大小达到一个阀值(最新版本默认128MB;由参数hbase.hregion.memstore.flush.size配置)时,memStore会被flush到文件,即生成一个快照。目前hbase 会有一个线程来负责memStore的flush操作。

 

4. StoreFile
memStore内存中的数据写到文件后就是StoreFile,即memstore的每次flush操作都会生成一个新的StoreFile,但是当一个store上默认超过3个StoreFile便会对StoreFile进行合并成一个新的StoreFile,由hbase.hstore.compactionThreshold参数控制。StoreFile底层是以HFile的格式保存。

 

5. HFile
HFile是HBase中KeyValue数据的存储格式,是hadoop的二进制格式文件。一个StoreFile对应着一个HFile。而HFile是存储在HDFS之上的。HFile文件格式是基于Google Bigtable中的SSTable,如下图所示

首先HFile文件是不定长的,长度固定的只有其中的两块:Trailer和FileInfo。Trailer中又指针指向其他数据块的起始点,FileInfo记录了文件的一些meta信息。

 

6.补充内容:

从HBase上面的架构图,我们可以看出一张表如何落地的了。

(1)一张表,按行进行横向切分,分成很多数据块,这些块组成一个个region。

(2)在region内部,这些行又可以按列(列簇)分,分成多个store,每个列簇组成一个store,store内部又分成MemStore和StoreFile,数据先写入MemStore,MemStore满了再flush到HFile上。

(3)一个RegionServer上有很多region,这些region可能属于同一张表,也可能属于不同的表。

(4)一个region内部有多个store,但这些store都属于同一张表。因为一个region内不同的store只是一张表不同的列(列簇)。

 

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值