四十九、HBase介绍

传统的RDBMS关系型数据库(例如SQL)存储一定量数据时进行数据检索没有问题,可当数据量上升到非常巨大规模的数据(TB或PB)级别时,传统的RDBMS已无法支撑,这时候就需要一种新型的数据库系统更好更快的处理这些数据,我们可以选择HBase。本文我们开始HBase部分的内容,关注专栏《破茧成蝶——大数据篇》,查看更多相关的内容~


目录

一、HBase是什么

二、HBase的特点

三、HBase的架构

3.1 HBase的基本组件

3.1.1 Client

3.1.2 HMaster

3.1.3 HRegionServer

3.1.4 Region

3.1.5 Store

3.1.6 MemStore

3.1.7 HFile

3.2 HDFS

3.3 Zookeeper

3.4 Write-Ahead logs

四、HBase的数据结构

4.1 RowKey

4.2 Column Family

4.3 Cell

4.4 TimeStamp

4.5 namespace


一、HBase是什么

HBase(Hadoop Database)是一个开源的、面向列(Column-Oriented)、适合存储海量非结构化数据或半结构化数据的、具备高可靠性、高性能、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群。HBase的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。

二、HBase的特点

1、海量存储

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

2、列式存储

这里的列式存储其实说的是列族(ColumnFamily)存储,HBase是根据列族来存储数据的。列族下面可以有非常多的列,列族在创建表的时候就必须指定。

3、极易扩展

HBase的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)。通过横向添加RegionSever的机器,进行水平扩展,提升HBase上层的处理能力,提升HBase服务更多Region的能力。RegionServer的作用是管理region、承接业务的访问,这个后面会详细的介绍通过横向添加Datanode的机器,进行存储层扩容,提升HBase的数据存储能力和提升后端存储的读写能力。

4、高并发

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

5、稀疏

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

三、HBase的架构

3.1 HBase的基本组件

从上图可以看出HBase是由Client、Zookeeper、HMaster、HRegionServer、HDFS等几个组件组成,下面我们分别来看一下这几个组件。

3.1.1 Client

Client有以下几点作用:

1. 整个HBase集群的访问入口;

2. 使用HBase RPC机制与HMaster和HRegionServer进行通信;

3. 使用HMaster进行通信进行管理类操作;

4. 与HRegionServer进行数据读写类操作;

5. 包含访问HBase的接口,并维护cache来加快对HBase的访问。

3.1.2 HMaster

Master节点的主要职责如下:

1、为RegionServer分配Region。

2、维护整个集群的负载均衡。

3、维护集群的元数据信息。

4、发现失效的Region,并将失效的Region分配到正常的RegionServer上。

5、当RegionSever失效的时候,协调对应Hlog的拆分。

3.1.3 HRegionServer

HRegionServer直接对接用户的读写请求。它的功能概括如下:

1、管理master为其分配的Region。

2、处理来自客户端的读写请求。

3、负责和底层HDFS的交互,存储数据到HDFS。

4、负责Region变大以后的拆分。

5、负责Storefile的合并工作。

3.1.4 Region

HBase表的分片,HBase表会根据RowKey值被切分成不同的Region存储在RegionServer中,在一个RegionServer中可以有多个不同的Region。

3.1.5 Store

HFile存储在Store中,一个Store对应HBase表中的一个列族(列簇, Column Family)。

3.1.6 MemStore

内存存储,位于内存中。用来保存当前的数据操作,所以当数据保存在WAL中之后,RegsionServer会在内存中存储键值对。

3.1.7 HFile

这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。StoreFile是以HFile的形式存储在HDFS的。

3.2 HDFS

HDFS为HBase提供最终的底层数据存储服务,同时为HBase提供高可用(Hlog存储在HDFS)的支持,具体功能概括如下:

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

2、数据多副本,保证的高可靠和高可用性。

3.3 Zookeeper

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

1、通过Zoopkeeper来保证集群中只有1个master在运行,如果master异常,会通过竞争机制产生新的master提供服务。

2、通过Zoopkeeper来监控RegionServer的状态,当RegionSevrer有异常的时候,通过回调的形式通知Master RegionServer上下线的信息。

3、通过Zoopkeeper存储元数据的统一入口地址。

3.4 Write-Ahead logs

HBase的修改记录,当对HBase读写数据的时候,数据不是直接写进磁盘,它会在内存中保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有更高的概率引起数据丢失,为了解决这个问题,数据会先写在一个叫做Write-Ahead logfile的文件中,然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。

四、HBase的数据结构

4.1 RowKey

RowKey是用来检索记录的主键。访问HBase table中的行,只有三种方式:

1、通过单个RowKey访问(get);

2、通过RowKey的range(正则)(like);

3、全表扫描(scan)。

RowKey行键可以是任意字符串(最大长度是64KB,实际应用中长度一般为 10-100bytes)。在HBase内部,RowKey保存为字节数组。存储时,数据按照RowKey的字典序(byte order)排序存储。设计RowKey时,要充分考虑排序存储这个特性,将经常一起读取的行存储放到一起。

4.2 Column Family

HBase表中的每个列,都归属于某个列族。列族是表的schema的一部分,而列不是。列族必须在使用表之前定义,列名都以列族作为前缀。

4.3 Cell

由{rowkey, column Family:columu, version} 唯一确定的单元。cell中的数据是没有类型的,全部以字节码形式存贮。

4.4 TimeStamp

HBase中通过rowkey和columns确定的为一个存贮单元称为cell。每个cell都保存着同一份数据的多个版本。版本通过时间戳来索引。时间戳的类型是 64位整型。时间戳可以由HBase在数据写入时自动赋值,此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显式赋值。如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。每个cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。

为了避免数据存在过多版本造成的的管理(包括存贮和索引)负担,HBase提供了两种数据版本回收方式。一是保存数据的最后n个版本,二是保存最近一段时间内的版本(比如最近七天),用户可以针对每个列族进行设置。

4.5 namespace

命名空间中包含了table、RegionServer group、Permission和Quota。

1、Table:表,所有的表都是命名空间的成员,即表必属于某个命名空间,如果没有指定,则在default默认的命名空间中。

2、RegionServer group:一个命名空间包含了默认的RegionServer Group。

3、Permission:权限,命名空间能够让我们来定义访问控制列表ACL(Access Control List)。例如,创建表,读取表,删除,更新等等操作。

4、Quota:限额,可以强制一个命名空间可包含的region的数量。

 

本文主要是对HBase进行的一个简单介绍,包括HBase的特点、架构以及数据结构。你们在此过程中遇到了什么问题,欢迎留言,让我看看你们都遇到了哪些问题~

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

象在舞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值