什么是HBase?它是怎样工作的?终于有人讲明白了

导读:HBase是一个构建在HDFS之上的、分布式的、支持多版本的NoSQL数据库,它的出现补齐了大数据场景下快速查询数据能力的短板 。它非常适用于对平台中的热数据进行存储并提供查询功能 。
作者:朱凯
来源:华章科技
什么是HBase?它是怎样工作的?终于有人讲明白了

文章插图
 
01 概述HBase的出现很好地弥补了大数据快速查询能力的空缺 。让我们再次将时间拨回到2006年,那时Hadoop项目已经正式启动,开源社区已经拥有了HDFS和MapReduce 。通过HDFS我们拥有了能够存储海量文件的分布式文件系统 。通过MapReduce我们拥有了一种对海量数据进行批处理操作的途径 。
但是这还不够,我们在大数据领域还没有一款能够称为数据库的产品 。就在2006年年末,google发表了著名的Bigtable论文 。此后HBase便诞生了 。
HBase是一个构建在HDFS之上的、分布式的、支持多版本的NoSql数据库 。它也是Google BigTable的开源实现 。HBase非常适合于对海量数据进行实时随机读写 。HBase中的一张表能够支撑数十亿行和数百万列 。
HBase从设计上来讲是一个由三类服务组成的Master/Slave架构服务 。HBase Master进程负责处理Region分配、DDL(create、delete表)这类操 。数据的读写由RegionServers进程负责处理 。底层数据存储和集群协同管理则交由HDFS和Zookeeper进行管理,如图2-6所示 。
什么是HBase?它是怎样工作的?终于有人讲明白了

文章插图
▲图2-6 HBase逻辑架构图
HBase的所有数据最终都以HDFS文件的形式进行存储,Region Server服务通常是伴随着HDFS的Datanode进行部署的,这样可以更好地利用数据本地性的优势 。
HBase采用主从架构 。其分布式协调是通过Zookeeper进行管理的,而数据的物理存储最终会以文件的形式存储到HDFS 。
02 数据模型HBase是一个NoSQL数据库,它通过一个四维数据模型定义数据,如图2-7所示 。
  • RowKey:HBase中的每行数据都必须拥有一个唯一的行键,它类似于关系型数据库中的主键 。
  • Column Family:HBase中的每个列都归属于一个列簇,它类似于子表的概念 。一个列簇对应一个MemStore对象 。
  • Column:HBase用列来定义数据属性字段,和关系型数据库中的表字段类似 。
  • Version:HBase中的数据是有版本概念的,每次新增或者修改数据都会产生一个新的版本 。

什么是HBase?它是怎样工作的?终于有人讲明白了

文章插图
▲图2-7 HBase的四维数据模型
HBase的数据模型由行键、列簇、列名和版本号组成 。
03 RegionsHBase的表以RowKey的起止区间为范围被水平切分成了多个Region 。每个Region中包含了RowKey从开始到结束区间的所有行 。这些Region被分配到的集群节点称为RegionServers,RegionServers负责提供HBase中数据的读写功能 。一个RegionServer可以容纳大约1000个Region,如图2-8所示 。
什么是HBase?它是怎样工作的?终于有人讲明白了

文章插图
▲图2-8 HBase Regions的逻辑结构
一个Region Server包含了多个Region,每个Region包含了一部分数据 。
04 HBase MasterHBase Master主要负责Region的分配和一些DDL操作,如图2-9所示 。HBase Master在启动、失败恢复或者负载均衡的时候为region指定所属的RegionServer,或者是创建、删除和更新表的这类操作 。
什么是HBase?它是怎样工作的?终于有人讲明白了

文章插图
▲图2-9 HBase Master的逻辑结构
HMaster作为主控节点并不直接存储数据,它只是做一些统筹分配和DDL操作 。
05 Region Server之前我们提到过,为了利用HDFS数据本地性的能力,通常会将RegionServer一同安装在HDFS的Datanode所在的服务器之上,如图2-10所示 。RegionServer自身包含这么几个部分: