HBase數據文件格式解析 (2012/4/26)

概述

hfile是hbase中存儲數據的文件,圖1描述了hfile文件格式。hfile文件由6部分組成:data block,meta block(可選),file info,data block index,meta block index,trailer。data block存儲了表數據,meta block存儲了布隆過濾器索引數據,file info存儲了本文件的相關信息,index存儲了datablock和metablock的索引數據,trailer存儲了本文件的相關信息。

圖1 hfile格式概要圖

   

1 hfile

圖2 hfile 格式

如圖2,括號中的符號採用了正則表達式的方法,+表示大於等於1個,*表示大於等於0個,(0,1)表示要麼是0個要麼是1個。如圖所示,hfile包含至少一個datablock,0個到多個 metablock,1個fileinfo,0個或1個meta block index,1個trailer。

2 data block

圖3 data block格式

data block存儲真正的表數據。一個文件中的block的大小大致一致,約爲blocksize(默認值是65K)。

key的type有如下四種取值:

put

delete

12 

delete column

14 

delete column family

3 meta block

圖4 meta block格式

data是與bloomfilte相關的數據。

4 file info

圖5 file info格式

如圖5所示,fileinfo存儲了4個項目。

AVG_KEY_LEN

是datablock中的key的平均長度;

AVG_VALUE_LEN

是本文件中的data block的value的平均長度;

COMPARATOR

決定了key/value在data block中的排序,有3種COMPARATOR:

KeyComparator

用戶數據的比較器

MetaKeyComparator

元數據的比較器

RootKeyComparator

Root元數據的比較器

LASTKEY

可選。最後一個data block中的最後一個key

   

5 data index

圖6 data index block格式

每個項目對應一個data block,項目包括如下各個元素:

block offset

    對應的data block在文件中的偏移

block size

    對應的data block的大小

block key len

    block key的長度

block key

    塊中的第一個key

   

6 meta index

圖7 meta index block格式

可選。每個項目對應一個meta block,項目的各個元素的意義同data index block。

block key的取值可能爲:

"BLOOM_FILTER_META"

"BLOOM_FILTER_DATA"

   

7 trailer

圖8 trailer格式

fileinfooffset

    fileoinfo在文件中的偏移

dataIndexOffset

    data index在文件中的偏移

dataIndexCount

        即data block的數量,也是dataIndex的項目的數量。因爲dataIndex中的項目與datablock一一對應。

metaIndexOffset

metaIndex在文件中的偏移

metaIndexCount

        metaIndex中項目的數量,也是meta block的數量。

totalUncompressedBytes

        所有datablock中數據未壓縮之前的總大小

entryCount

        所有datablock中key/value的總數量。

compresssionCodec

支持三種壓縮方式

代碼

壓縮算法

LZO 

GZIP 

NONE 

   

version

    hfile格式的版本號,目前爲1。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章