Hbase的数据模型

Hbase的数据模型

一 、数据的存储介绍

1、HRegion是HBase中分布式存储和负载均衡的最小单元。
  存储的时候,每个Region会有一个目录(命名空间目录/表名目录/Region目录/列簇目录)
  最小单元就表示不同的HRegion可以分布在不同的HRegionserver上
2、HRegion由一个或者多个Store组成,每个store对应一个列簇(columnsfamily)
3、每个Strore又由一个memStore和0至多个StoreFile组成。

image

二、单元格CELL

image

(1)由行和列的坐标交叉决定
(2)单元格是有版本的
(3)单元格的内容是未解析的字节数组
(4)由{row key, column( =<family> +<qualifier>), version} 
   唯一确定的单元。cell中的数据是没有类型的,全部是字节码形式存贮

三、RowKey说明

(1)唯一标识一行数据
(2)可以通过RowKey获取一行数据
(3)表里的数据是按照字典升序排序的
(4)Row key最大只能存储64k的字节数据(通常我们会用到10-100字节byte,不会用到64k)  

四、Column Family(列族)和qualifier(列)

(1)HBase表中的每个列都归属于某个列族,列族必须作为表模式(schema)定义的一部分预先给出。
   如 create ‘test’, ‘course’。

(2)列名以列族作为前缀,每个“列族”都可以有多个列成员(column);
   如course:math, course:english, 新的列族成员(列)可以随后按需、动态加入。

(3)权限控制、存储以及调优都是在列族层面进行的(因为Hbase是面向列簇的)

(4)HBase把同一列族里面的数据存储在同一目录下,由几个文件保存

五、Timestamp时间戳

(1)在HBase每个cell存储单元对同一份数据有多个版本,
   根据唯一的时间戳来区分每个版本之间的差异,不同版本的数据按照时间倒序排序,
   最新的数据版本排在最前面

(2)时间戳的类型是64位整型

(3)时间戳可以由HBase(在数据写入时自动)赋值,此时间戳是精确到毫秒的当前系统时间

(4)时间戳也可以由客户显式赋值(一般不手动指定),如果应用程序要避免数据版本冲突,
   就必须自己生成具有唯一性的时间戳

六、HLOG

(1)HLog文件就是一个普通的Hadoop Sequence FileSequence File的Key是HLogKey对象,HLogKey中记录了写入数据的归属信息,
   除了table和region名字外,同时还包括 sequence number和timestamp,
   timestamp是”写入时间”,sequence number的起始值为0,
   或者是最近一次存入文件系统中sequence number。

(2)HLog SequeceFile的Value是HBase的KeyValue对象,即对应HFile中的KeyValue

七、读写流程图

image

posted @   阿伟宝座  阅读(331)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示