图解HBase--大数据平台技术栈大数据应用

来源:互联网 / 作者:SKY / 2019-07-31 20:40 / 点击:
HBase不同于一般的关系型数据库,它是一个适合于非结构化数据存储的数据库。HBase不限制存储的数据的种类,允许动态的、灵活的数据模型。HBase可以在一个服务器

HBase是一个分布式的、面向列的开源数据库存储系统,是对Google论文BigTable的实现,具有高可靠性、高性能和可伸缩性,它可以处理分布在数千台通用服务器上的PB级的海量数据。BigTable的底层是通过GFS(Google文件系统)来存储数据,而HBase对应的则是通过HDFS(Hadoop分布式文件系统)来存储数据的。

HBase不同于一般的关系型数据库,它是一个适合于非结构化数据存储的数据库。HBase不限制存储的数据的种类,允许动态的、灵活的数据模型。HBase可以在一个服务器集群上运行,并且能够根据业务进行横向扩展。

HBase特点

图解Hbase--大数据平台技术栈

海量存储:HBase适合存储PB级别的海量数据,在PB级别的数据以及采用廉价PC存储的情况下,能在几十到百毫秒内返回数据。这与HBase的记忆扩展性息息相关。正是因为HBase的良好扩展性,才为海量数据的存储提供了便利。

列式存储:列式存储,HBase是根据列族来存储数据的。列族下面可以有非常多的列,列族在创建表的时候就必须指定,而不用指定列。

极易扩展:HBase的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储能力(HDFS)的扩展。

高并发:目前大部分使用HBase的架构,都是采用廉价PC,因此单个IO的延迟其实并不小,一般在几十到上百ms之间。这里说的高并发,主要是在并发的情况下,HBase的单个IO延迟下降并不多。

稀疏:稀疏主要是针对HBase列的灵活性,在列族中,可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间。

HBase与关系型数据库对比

图解Hbase--大数据平台技术栈

HBase数据模型

Namespace(表命名空间):表命名空间不是强制的,如果想把多个表分到一个组去统一管理的时候才会用到表命名空间。

Table(表):一个表由一个或者多个列族组成。

Row(行):一个行包含了多个列,这些列通过列族来分类。行中的数据所属列族只能从该表所定义的列族中选取,不能定义这个表中不存在的列族。

Column Family(列族):列族是多个列的集合。

Column Qualifier(列):多个列组成一个行。列族和列用:Column Family:Column Qualifier表示。列是可以随意定义的,一个行中的列不限名字,不限数量,只限定列族。

Cell(单元格):一个列中可以存储多个版本的数据,每个版本就称为一个Cell。也就是说在HBase中一个列可以保存多个版本的数据。

Timestamp(时间戳/版本号):用来标定同一个列中多个Cell的版本号。当在插入数据的时候,如果不指定版本号,系统会自动采用系统的当前时间戳来作为版本号,也可以手动指定一个数字作为版本号。

Rowkey(行键):用来标识表中唯一的一行数据,以字节数组形式存储,类似关系型数据库中表的主键。rowkey在HBase中时严格按照字典序排序的。

图解Hbase--大数据平台技术栈

物理视图

在物理存储上,数据是以Key-Vaule对形式存储,每个Key-Value只存储一个Cell里面的数据,不同的列族存储在不同的文件中,每个逻辑单元格(Cell)会对应一行数据,有Timestamp标记版本,每次插入、删除都会生成一行数据(append-only,写效率高)。

图解Hbase--大数据平台技术栈

图解Hbase--大数据平台技术栈

HBase体系架构

HBase的服务器体系结构遵循简单的主从服务器架构,一般一个HBase集群由一个Master服务(高可用的话,至少两个)和1个或多个RegionServer服务组成。Master服务负责维护表结构信息,实际的数据是保存在RegionServer上,最终RegionServer保存的表数据会直接存储在HDFS上。HBase的体系架构图如下图所示:

图解Hbase--大数据平台技术栈

Master HBase的管理节点,在一个集群中Master一般是主备的,主备的选择是由Zookeeper实现的。

HBase Master主要职责:

为RegionServer分配Region;

负责RegionServer的负载均衡;

发现失效的RegionServer并重新分配其上的Region;

处理Schema更新请求(表的创建、删除、修改、列族的增加等)。

RegionServer

RegionServer主要负责服务和管理Region。在分布式集群中,建议RegionServer和DataNode按照1:1比例部署,这样RegionServer中的数据文件可以存储一个副本于本机的DataNode节点中,从而在读取数据时可以利用HDFS的"短路径读取(Short Circuit)"来绕过网络请求,降低读延时。

RegionServer内部管理一个或多个Region。Region许多Store组成。每个Store对用Table中的一个列族存储,即一个Store管理一个Region上的一个列族。每个Store包含一个MemStore和0到多个StoreFile。

RegionServer的主要职责:

RegionServe维护Master分配给它的Region,处理Client对这些Region的IO请求;

RegionServer还负责Region的Split、Compaction。

Zookeeper

HBase通过Zookeeper来做Master的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等工作。具体工作如下:

为HBase提供Failover机制,选举master,避免master单点故障问题;

存储所有Region的寻址入口,保存hbase:meta表信息;

实时监控RegionServer的状态,将RegionServer的上线和下线信息实时通知给master;

存储HBase的Schema,包括有哪些Table,每个Table有哪些Column Family。

HDFS

HDFS为HBase提供最终的底层数据存储服务,同时为HBase提供高可用(HLog)的支持。HBase底层存储并非必须是HDFS文件系统,但是HDFS是最佳选择,也是目前应用最广泛的选择。HDFS具体功能如下:

提供元数据和表数据的底层分布式存储服务;

数据多副本,保证了高可靠和高可用性

Client

阅读延展

1
3