04. HBase HFile解析

2018-09-05  本文已影响0人  牦牛sheriff

基本概念

所以,一个HBase的Table存取模式为:

(Table, RowKey, Family, Qualifier, Timestamp) -> Value

一个Table存取等价于高级语言的一个map:

SortedMap<
    RowKey, List<
        SortedMap<
            Qualifier, List<
                Value, Timestamp
            >
        >
    >
>

或者,再直观一点,逻辑上等价于一个固定格式的Json:

{
    "RowKey1" {
        "Family1": {
            "Qualifier11":{
                "Timestamp111":"Value111"
            }
            "Qualifier12":{
                "Timestamp121":"Value121",
                "Timestamp122":"Value122"
            }
        }
        
        "Family2" : {
            "Qualifier21":{
                "Timestamp211":"Value211"
            }
        }
    }
    "RowKey2" {
        ...
    }
}

HFile存储单元

也叫StoreFile,google论文中是SSTable,是数据存储的地方,HBase之所以是面向列的数据库,是因为数据以key-value形式存储的,列可以动态扩展

KeyValue

当put到hbase一个key和value的时候,会增加一条记录:

(Table, RowKey, Family, Qualifier, Timestamp) -> Value

该记录以字节流的方式存储,对应到磁盘中的存储格式为:


image.png

BlockData

多个KeyValue结构,按照Key递增的顺序,组成一个BlockData(默认64K),BlockData在HFile存在磁盘中的存储方式为: image.png

DataBlock

DataBlock是对BlockData的进一步封装,在BlockData基础上,增加了一个8字节的标志位,magic number,用来标记BlockData的类型,常见的标记类型有:

HFile

由以下四部分组成:

image

HFile V1、V2和V3

查找rowKey过程:

参考资料

官方文档

Transcript of HBase for Architects Presentation

《HBase权威指南》


转载请注明出处:http://my.oschina.net/serverx

上一篇 下一篇

猜你喜欢

热点阅读