HBase数据模型

来源:互联网 发布:游戏合集软件 编辑:程序博客网 时间:2024/06/10 12:44

HBase的表由行和列共同组成,HBase中有列族的概念,它将一列或者多列组织在一起,一个列必定属于某个列族

两种数据模型

逻辑模型

HBase 是一个稀疏的,长期存储的,多维度的,排序的映射表,表中的没一行可以有不同的列


HBase中最基本的单位是列,一列或多列构成了行,行有行键(rowkey),没一行的行健都是唯一的,相同行健的插入被人难为是对该行上某些列的更新


HBase一个表中,有若干行,一行有若干列,列中的值有多个版本,每个版本的值称之为单元格,每个单元格是存储不同时刻改列的值。


HBase中,列名是由列族前缀和修饰符(Qualifier)链接组成,中间由“:”分隔。以下是HBase的逻辑模型

这里写图片描述

物理模型

在物理上,表是按列分开存储的。HBase的列是按列族分组的,HFile是面向列的,存放的不同列的物理文件,一个列族的数据存放在多个HFile中,最重要的是一个列族的数据会被同一个Region管理,物理上存放在一起。

这里写图片描述

这里写图片描述

HBase可以不 禁用表而随时加入新的列,因此可以将一个新的列加入列族而不需要申明

HBase行键

行键(RowKey)是不可分割的字节数组 ,行键是由字典 顺序由低到高存储在表中的

排序

Get 和Scan操作是经过排序的数据,列在服务器端也是字典排序的,所以按照名称的字典序返回.
总体来说: 返回的数据首先按照行字典排序,然后是列族字典排序,然后是修饰符字典排序,最后按照时间戳反响排序,最新的排在前面

自动分区

HBase 中一个表的数据会被划分为很多Region,Region可以动态扩展并且HBase保证Region的负载均衡.Region实际上是行键排序后的按规则分割的连续的存储空间.如果Region太大,会被动态拆分,相反,多个Region会被合并成一个较大的Region,以减少HDFS上存储文件数量.这两个过程就是HBase的Split和Compaction.
刚刚创建的表只有一个Region,随着数据的写入,达到Region上线配置时,Region会按照中间键自动地拆分成两个大致相等的Region.每个Region由一个RegionServer管理,一个RegionServer处理器管理着许多的Region
Region的拆分和转义是由HBase 自动完成的,用户感知不到,当一个RegionServer服务器发生故障时,Region可以快速的被转移到其他服务器上,Region的拆分过程也是瞬间完成的.当Region进行拆分时,首先将该Region下线,拆分完后新Region再上线.下线的Region暂时不可用,不过由于速度极快,通常不会对数据的读写造成影响

0 0