HBase源码系列(六)HBase存储结构与StoreFile存储格式


这次终于到了HBase的存储部分,先看一下 HBase系统架构图
这里写图片描述

Region

Region是构成分布式table的基本元素,它由每个Column Family 对应一个Store组成。

/hbase
    /<Table>                    (Tables in the cluster)
        /<Region>               (Regions for the table)
            /<ColumnFamily>     (ColumnFamilies for the Region for the table)
                /<StoreFile>    (StoreFiles for the ColumnFamily for the Regions for the table)

详细一点

Table                    (HBase table)
    Region               (Regions for the table)
        Store            (Store per ColumnFamily for each Region for the table)
            MemStore     (MemStore for each Store for each Region for the table)
            StoreFile    (StoreFiles for each Store for each Region for the table)
                Block    (Blocks within a StoreFile within a Store for each Region for the table)

Store

Store有一个MemStore和0个或更多的StoreFiles(HFiles)。

MemStore

MemStore保存对Store的内存修改。 修改是Cells / KeyValues。 当请求刷新时,当前的MemStore被移动到快照并被清除。HBase将继续处理来自新的MemStore的编辑并支持快照,直到flusher报告flush成功。 此时,快照被丢弃。 请注意,发生刷新时,属于同一区域的MemStore将全部刷新。

MemStore Flush

MemStore刷新可以在下面列出的任何条件下触发。 最小flush单位是每个region,而不是单个MemStore级别。
1、当一个MemStore达到hbase.hregion.memstore.flush.size 配置的大小时,属于一个region的所有MemStore都会刷新到磁盘。
2、当全局MemStore使用量达到hbase.regionserver.global.memstore.upperLimit 配置的大小时,不同region的MemStore将会刷新到磁盘,以减少RegionServer中的MemStore使用量。
刷新顺序按照一个region的MemStore使用量的降序进行flush。
Regions将刷新它们的MemStore,直到整个MemStore使用率下降到或略低于hbase.regionserver.global.memstore.lowerLimit
3、当给定region服务器的WAL中的WAL日志条目数达到hbase.regionserver.max.logs中指定的值时,来自各个regions的MemStore将被刷新到磁盘以减少WAL中的日志数量。
刷新基于时间顺序,最早的MemStore的regions将首先刷新,直到WAL日志降至hbase.regionserver.max.logs 以下。

StoreFile (HFile)

StoreFile是实际存储数据的。StoreFile是HFile的轻量级包装。

HFile 格式

HFile文件格式基于Hadoop的TFile,模仿了Google Bigtable 架构中的SSTable格式。HFile Version 1 文件格式如下:
这里写图片描述

KeyValue

KeyValue类是HBase中数据存储的核心。 KeyValue包装一个字节数组,并将偏移量和长度值放入传递的数组中,指定将内容开始解释为KeyValue的位置。

HFile Version 2 文件结构:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值