• 欢迎访问显哥博客,本网站纯属学习技术,绝无商业用途,欢迎小伙伴们共同学习!研究技术!QQ:52249909 加我QQ
  • 世界75亿人,这么小的概率,能认识你,是我一生的幸运,不妨加个QQ接触一下:52249909 加我QQ

分布式列式数据库Hbase

云计算 lixian 5年前 (2019-10-25) 1348次浏览 0个评论 扫描二维码
文章目录[隐藏]

Hbase简介

1、可提供随机的、实时的大数据读写访问
2、目标是在商用硬件上存储非常大的表——数十亿的行数百万的列
3、开源的、分布式的、版本化的、面向列的存储模型
4、对Google公司Bigtable系统的开源模仿,建立在Hadoop和HDFS之上提供类Bigtable的存储力

Hbase数据模型

1、按预先定义好的列族(Column family)结构来存储数据,即每一条数据有一个key以及若干个列属性值组成,每列的数据都有自己的版本信息
2、数据是按列进行有序存储的,不同于关系型数据库中按行存储
3、两种方式的数据操作,通过对有序key值进行扫描查询,获取value值,或者借助强大的Hadoop来进行Map/Reduce查询
4、采用了强一致性的读写保证,数据会在多个不同的域(region)中进行保存。列族可以包含无限多个数据版本,每个版本可以有自己的TTL(Time to Live,生命周期)
5、通过行级锁来保证写操作的原子性,但是不支持多行写操作的事务性。数据扫描操作不保证一致性

HBase下表的逻辑视图

分布式列式数据库Hbase
行键(Row key)
时间戳(Time stamp)
列族(Column family)
列(Column)

注:在创建一张表时,必须定义行键名及所需列族的列族名,理论上一张表在创建时可以无限制地定义列族个数,而时间戳会由系统自动生成。列无需在创建表时定义,可以在使用时随意定义使用,一个列族下同样可以无限制的定义列的个数。虽然,HBase中可以任意的定义列族个数及附属列的个数,但是只需能够保证任意一列不为空时,该行即为有效行。

HBase下表的物理视图

分布式列式数据库Hbase
在HBase中采用的稀疏存储,物理存储过程中细化到一个单元(Cell)。在逻辑视图中,任意一行不会空的每一列都被称作为一个单元。单元联同行键、时间戳、列族名、列名做为完整的一行存储到文件系统中,并且这个存储过程中会自动排序,先在各行键间以字母升序排列,再在同行键间以时间戳降序排列。

Hbase物理存储过程

分布式列式数据库Hbase
1、表创建的初始阶段其中只含有一个Region,随着表中数据的量的不断增多,一个Region会分裂为两个Region,然后不断重复上述过程,并且Region会被存储到HDFS中不同的DataNode上。Region包含有一个或多个的Store,其数量增长过程同表中的Region数量增长过程一致
2、Store中分为两个部分:第一个部分是Memstore,一个Store中只包含一个Memstore,并且Memstore存储在内存空间中;第二个部分是Storefile,此部分由Memstore写入硬盘而得。随着Memstore写入硬盘的次数增多,Storefile的数量也会增加,当文件个数增加到一定量时,系统会自动对Storefile文件进行合并。
3、合并过程中主要完成以下几个工作:1.具有相同行键的行存放在一个文件中;2.扔掉被标志为删除的行;3.扔掉时间戳过期的行,完成更新操作。随着合并操作的频繁执行Storefile会变得很大,达到一定文件大小时自动分裂文件,贴合HDFS中对一个块数据大小的定义
4、HBase的一张表中的多个列族(Column Family),在物理存储上一个列族对应一个文件夹,一个文件夹中可包含若干个Hfile文件。Hfile是Storefile的底层文件格式,StoreFile就是对Hfile做了轻量级包装

Hfile的文件结构

文件组成
数据块(Data block)
元数据块(Meta block)
分布式列式数据库Hbase
1、记录(Record)数据块中以键值对形式存放的用户数据,一条记录保存一个键值对或者说保存一个单元的数据
2、元数据块其主要作用是判断一个键值是都在当前Hfile文件中
3、文件信息(FileInfo)中保存了与该HFile相关的一些信息,其中有系统保留的一些固定的值,也可以保存用户自定义的一些值
4、数据块索引(Data Block Index)保存的是每一个数据块在HFile文件中的位置、大小信息以及每个块的第一个单元的键值
5、元数据索引(Meta Block Index)的格式与数据库索引相同,元数据块索引保存的是每一个元数据在HFile文件中的位置、大小信息以及每个元数据的键值
6、文件尾(Fixed file trailer)主要保存了该Hfile的一些基本信息,其大小固定,主要是可以根据它查找到Fileinfo,Block Index的起始位置


本站博主 , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:分布式列式数据库Hbase
喜欢 (13)

您必须 登录 才能发表评论!