HBase里面的HFile存储结构

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个字节

以上只是举例!!!

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

时间: 2024-10-12 17:18:11

HBase里面的HFile存储结构的相关文章

HBase介绍(2)---数据存储结构

在本文中的HBase术语:基于列:column-oriented行:row列组:column families列:column单元:cell 理解HBase(一个开源的Google的BigTable实际应用)最大的困难是HBase的数据结构概念究竟是什么?首先HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库.另一个不同的是HBase基于列的而不是基于行的模式. Google's BigTable论文 清楚地解释了什么是BigTable:Bigtable是一个疏松的分布式的

HBase里的HFile

HFile文件是不定长的. HFile里才是想要的真正数据,实际存储的位置,是在HDFS上.

C#里面的Switch分支结构的使用

在C#这门编程语言里面,不但可以使用if和else来实现分支结构,也可以使用switch来实现分支结构. 构造大致如下: switch(变量值) { case 常量值1: 语句1: break; case 常量值2: 语句2: break: //还可以有多个case分支 default: //default往往是放到最后 语句: break; } 比如:可以借助于switch来实现加减乘除的判断: 代码如下: int 运算数1,运算数2;            string 运算符;      

HBase 的存储结构

HBase 的存储结构 2016-10-17 杜亦舒 HBase 中的表常常是超级大表,这么大的表,在 HBase 中是如何存储的呢? HBase 会对表按行进行切分,划分为多个区域块儿,每个块儿名为 HRegion HBase 是集群结构,会把这些块儿分散存储到多个服务器中,每个服务器名为HRegionServer 服务器多了,就需要一个管理者 HMaster,负责 HRegion 的分配.HRegionServer 负载均衡的处理 等事务 当某个 HRegion 的大小达到阈值后,便会被分割

[Selenium]当DOM结构里面有iFrame,iFrame里面是html,怎么send keys to 里面的body,怎么用Assert进行验证?

我在测试的过程中遇到一个这样的问题,我无法通过CssSelector找到iFrame下边的html: <div id="mailEditorDiv" style="display: inline-block;"> <div class="maileditor"> <div style="height:130px;"> <div class="divBody">

HBase 是列式存储数据库吗

在介绍 HBase 是不是列式存储数据库之前,我们先来了解一下什么是行式数据库和列式数据库. 行式数据库和列式数据库 在维基百科里面,对行式数据库和列式数据库的定义为:列式数据库是以列相关存储架构进行数据存储的数据库,主要适合于批量数据处理(OLAP)和即时查询.相对应的是行式数据库,数据以行相关的存储体系架构进行空间分配,主要适合于小批量的数据处理,常用于联机事务型数据处理(OLTP). 比如我们有以下的表格: 那么行式数据库和列式数据库存储模型分别如上面的左图和右图.可以看到,行式数据一行的

HBase里的HRegion服务器

所有的数据库数据一般是保存在Hadoop分布式系统上面的,用户通过一系列HRegion服务器获取这些数据.一台机器上一般只运行一个HRegion服务器,而且每一分区段的HRegion也只会被一个HRegion服务器维护. HRegion服务器包含两大部分:HLog部分和HRegion部分.      HBase里的HRegion 其中HLog用来存储数据日志,采用的是先写日志的方式.HRegion部分由很多的HRegion组成,存储的是实际的数据.每一个HRegion又由很多的Store组成,每

从NSM到Parquet:存储结构的衍化

为了优化MapReduce及MR之前的各种工具的性能,在Hadoop内建的数据存储格式外,又涌现了一批各种各样的存储方式.如优化Hive性能的RCFile,以及配合Impala实现出Google Dremel功能(类似甚至是功能的超集)的Parquet等.今天就来一起学习一下HDFS中数据存储的进化历程. 数据摆放结构 数据摆放结构(data placement structure),顾名思义,就是数据如何在HDFS中放置和存储的.这种摆放结构对于像Hive这种,HDFS之上的查询工具来说是非常

大数据架构-使用HBase和Solr将存储与索引放在不同的机器上

摘要:HBase和Solr可以通过协处理器Coprocessor的方式向Solr发出请求,Solr对于接收到的数据可以做相关的同步:增.删.改索引的操作,这样就可以同时使用HBase存储量大和Solr检索性能高的优点了,更何况HBase和Solr都可以集群.这对海量数据存储.检索提供了一种方式,将存储与索引放在不同的机器上,是大数据架构的必须品. 关键词:HBase, Solr, Coprocessor, 大数据, 架构 正如我的之前的博客“Solr与HBase架构设计”http://http: