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上。
5、region虽然是分布式存储的最小单位,但并不是存储的最小单位。region由一个或多个store组成,每个store保存一个column family,每个store又由一个memstore和0至多个storefile组成,storefile包含hfile,memstore存储在内存中,storefile存储在HDFS上。
三、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技术原理的主要内容,如果未能解决你的问题,请参考以下文章