码迷,mamicode.com
首页 > 其他好文 > 详细

HBase里面的HFile存储结构

时间:2019-11-07 15:04:49      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:结构   hbase   base   剖析   ima   image   img   图片   ase   

1、本文章主要写的是关于HFile里面键值对的剖析

先来看看HFile的存储格式

技术图片

      HFile的文件是不定长的,长度固定的只有两块,就是Traifer和File info。

Data块的是由Magic和键值对组成,Magic主要是生成一些随机数来防止数据的损坏,其他的就是键值对。

上面我们大概的讲了一下,键值对,下面这个张图描述的更清晰

技术图片

                                                        键值对结构图

上面这张图里面包含的内容是:

Key Length :用4个字节(32位二进制)来描述我的Key的长度,里面4个字节的二进制位算出来的结果就表示我的Key占多少个字节

Value Length:用4个字节(32位二进制)来描述我的Value有多少字节,也是4个字节的二进制位算出来的结果就表示我的Value占多少个字节

Row Length:用2个字节(16位二进制)来描述我的RowKey有多少个字节,两个字节总共是16位,里面16位二进制算出来的值就是Rowkey的长度(多少字节)

Row:就是表示Rowkey

Column Family Length:用一个字节(8位二进制)来描述列族的长度,包含的二进制位算出来的值就是我的列族名的长度

Column Family:列族

Column Qualifiler:列族下的列族名,用Key Length算出来的总的二进制来减去(Row Length+Row+Column Family Length+Column Family+TimeStamp+ KeyType)

其中上图所给出的每个占的字节数都是固定的,只有需要我们算出来的字节数是不确定的

TimeStamp:用8个字节来表示时间戳

KeyType :用一个字节来描述键的类型

例如: 一道题给定的Key Length算出来的值为32,说明他的key的长度是总共有32个字节,

Row Length的2个字节(16位二进制)算出来的值为2,就说明RowKey的长度占2个字节,

Column  Family Length的1个字节(8位二进制)算出来的值为3,就说明Column Family占3个字节

Colum Qualifiler=Key Length的值-(Row Length+Row+Column Family Length+Column Family+TimeStamp+ KeyType)

Column Qualifiler的长度就为32-(2+2+1+3+8+1)=15

就说明在本题中Column Qualifiler所占的字节数为15个字节

以上只是举例!!!

 

 

HBase里面的HFile存储结构

标签:结构   hbase   base   剖析   ima   image   img   图片   ase   

原文地址:https://www.cnblogs.com/chui/p/11811833.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!