hbase技术原理

Posted Hadoop大数据之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hbase技术原理相关的知识,希望对你有一定的参考价值。

hbase是一个构建在HDFS上的分布式列存储系统,是基于Google BigTable模型开发的,典型的key/value系统,是hadoop ecosystem中重要组成部分,hbase主要用于海量非结构化数据存储。


一、hbase表特点

大:一个表可以有数十亿行,上百万列;

无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列;

面向列:面向列(族)的存储和权限控制,列(族)独立检索;

稀疏:空(null)列并不占用存储空间,表可以设计得非常稀疏;

数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;

数据类型单一:hbase中的数据都是字符串,没有类型。


二、hbase基本概念及存储特性

rowkey:主键,方便快速查找。

column family:列族,包含一个或者多个相关列。

column:属于某个column family,familyname:columnname,每条记录可动态添加。

version number:版本号,默认值是系统时间戳,可由用户自定义。

value(cell):列值

每个column family存储在HDFS上的一个单独文件中,空值不会被保存,key和version number在每个column family中均有一份,hbase为每个值维护了多级索引,即:<key, column family, column name, version number>。

物理存储:

1、table中所有行都按照rowkey的字典序排列;

2、table在行的方向上分割为多个region;

3、region按大小分割,每个表开始只有一个region,随着数据增多,region不断增大,当增大到一个阈值的时候,region就会等分为两个新的region,之后会有越来越多的region;

4、region是hbase中分布式存储和负载均衡的最小单位,不同region分布到不同的regionserver上。


hbase技术原理

5、region虽然是分布式存储的最小单位,但并不是存储的最小单位。region由一个或多个store组成,每个store保存一个column family,每个store又由一个memstore和0至多个storefile组成,storefile包含hfile,memstore存储在内存中,storefile存储在HDFS上。

hbase技术原理


三、hbase整体架构


Client:

包含访问hbase的接口,并维护cache来加快对hbase的访问,比如region的位置信息。

HMaster:

为region server分配region;负责region server的负载均衡;发现失效的region server并重新分配其上的region;管理用户对table的增删查改操作。

HRegionServer:

维护region;处理对这些region的I/O请求;负责切分在运行过程中变得过大的region。

Zookeeper:

通过选举,保证任何时候,集群只有一个HMaster,HMaster和HRegionServer启动时会向Zookeeper注册;存储所有region的寻址入口;实时监控HRegionServer的上线和下线信息,并实时通知给HMaster;存储HBase的schema和table元数据;

HLog(WAL log):

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


四、hbase读写流程

数据在更新时首先写入HLog和MemStore,MemStore中的数据是排序的,当MemStore累计到一定阈值时,就会创建一个新的MemStore,并且将老的MemStore添加到Flush队列,有单独的线程Flush到磁盘上,成为一个StoreFile。与此同时,系统会在Zookeeper中记录一个checkpoint,表示这个时刻之前的数据变更已经持久化。当系统出现意外时,可能导致MemStore中的数据丢失,此时使用HLog来恢复checkpoint之后的数据。

StoreFile是只读的,一旦创建后就不可以再修改,因此hbase的更新其实是不断追加的操作。当StoreFile达到一定阈值时,就会进行一次合并操作,将对同一个key的修改合并到一起,形成一个大的StoreFile。当StoreFile的大小达到一定阈值后,又会对StoreFile进行切分操作,等分为两个StoreFile。

以上是关于hbase技术原理的主要内容,如果未能解决你的问题,请参考以下文章

hbase技术原理

网易视频云技术分享:HBase高可用原理与实践

技术答疑HBase封装easy-hbase的原理是怎样的

Hbase的设计原理与技术细节

学习笔记大数据原理与技术 —— HBase大数据数据库

大数据原理与技术:分布式数据库HBase