华为云计算 云知识 【云小课】EI第25课 MRS基础入门之HBase组件介绍

【云小课】EI第25课 MRS基础入门之HBase组件介绍

HBase是一个开源的、面向列(Column-Oriented)、适合存储海量非结构化数据或半结构化数据的、具备高可靠性、高性能、可灵活扩展伸缩的、支持实时数据读写的分布式存储系统。

存储在HBase中的表的典型特征:

·         大表(BigTable):一个表可以有上亿行,上百万列

·         面向列:面向列(族)的存储、检索与权限控制

·         稀疏:表中为空(null)的列不占用存储空间

云小课logo.png

HBase结构

HBase主要由主备Master进程和多个RegionServer进程组成。

image010.png

 

名称

描述

Master

又叫HMaster,在HA模式下,包含主用Master和备用Master

·         主用Master:负责HBaseRegionServer的管理,包括表的增删改查;RegionServer的负载均衡,Region分布调整;Region分裂以及分裂后的Region分配;RegionServer失效后的Region迁移等。

·         备用Master:当主用Master故障时,备用Master将取代主用Master对外提供服务。故障恢复后,原主用Master降为备用。

Client

Client使用HBaseRPC机制与MasterRegionServer进行通信。ClientMaster进行管理类通信,与RegionServer进行数据操作类通信。

RegionServer

RegionServer负责提供表数据读写等服务,是HBase的数据处理和计算单元。

RegionServer一般与HDFS集群的DataNode部署在一起,实现数据的存储功能。

ZooKeeper集群

ZooKeeperHBase集群中各进程提供分布式协作服务。各RegionServer将自己的信息注册到ZooKeeper中,主用Master据此感知各个RegionServer的健康状态。

HDFS集群

HDFSHBase提供高可靠的文件存储服务,HBase的数据全部存储在HDFS中。

 

HBase原理

HBase数据模型

HBase以表的形式存储数据,数据模型如下图所示。表中的数据划分为多个Region,并由Master分配给对应的RegionServer进行管理。

每个Region包含了表中一段RowKey区间范围内的数据,HBase的一张数据表开始只包含一个Region,随着表中数据的增多,当一个Region的大小达到容量上限后会分裂成两个Region。您可以在创建表时定义RegionRowKey区间,或者在配置文件中定义Region的大小。

 

image012.png

名称

描述

RowKey

行键,相当于关系表的主键,每一行数据的唯一标识。字符串、整数、二进制串都可以作为RowKey。所有记录按照RowKey排序后存储。

Timestamp

每次数据操作对应的时间戳,数据按时间戳区分版本,每个Cell的多个版本的数据按时间倒序存储。

Cell

HBase最小的存储单元,由KeyValue组成。Keyrowcolumn familycolumn qualifiertimestamptypeMVCC version6个字段组成。Value就是对应存储的二进制数据对象。

Column Family

列族,一个表在水平方向上由一个或多个Column Family组成。一个CFColumn Family)可以由任意多个Column组成。ColumnCF下的一个标签,可以在写入数据时任意添加,因此CF支持动态扩展,无需预先定义Column的数量和类型。HBase中表的列非常稀疏,不同行的列的个数和类型都可以不同。此外,每个CF都有独立的生存周期(TTL)。可以只对行上锁,对行的操作始终是原始的。

Column

列,与传统的数据库类似,HBase的表中也有列的概念,列用于表示相同类型的数据。

 

RegionServer数据存储

RegionServer主要负责管理由HMaster分配的RegionRegionServer的数据存储结构如下所示。

image014.png

名称

描述

Store

一个Region由一个或多个Store组成,每个Store对应图1-2中的一个Column Family

MemStore

一个Store包含一个MemStoreMemStore缓存客户端向Region插入的数据,当RegionServer中的MemStore大小达到配置的容量上限时,RegionServer会将MemStore中的数据“flush”HDFS中。

StoreFile

MemStore的数据flushHDFS后成为StoreFile,随着数据的插入,一个Store会产生多个StoreFile,当StoreFile的个数达到配置的最大值时,RegionServer会将多个StoreFile合并为一个大的StoreFile

HFile

HFile定义了StoreFile在文件系统中的存储格式,它是当前HBase系统中StoreFile的具体实现。

HLog

HLog日志保证了当RegionServer故障的情况下用户写入的数据不丢失,RegionServer的多个Region共享一个相同的HLog

 

元数据表

元数据表是HBase中一种特殊的表,用来帮助Client定位到具体的Region。元数据表包括hbase:meta表,用来记录用户表的Region信息,例如,Region位置、起始RowKey及结束RowKey等信息。元数据表和用户表的映射关系如下图所示。

image016.png

数据操作流程

image018.png

1.    HBase进行增、、改、查数据操作时,HBase Client首先连接ZooKeeper获得hbase:meta表所在RegionServer的信息(涉及namespace级别修改的,比如创建表、删除表需要访问HMaster更新meta信息)

2.    HBase Client连接到包含对应的hbase:meta表的Region所在的RegionServer,并获得相应的用户表的Region所在的RegionServer位置信息。

3.    HBase Client连接到对应的用户表Region所在的RegionServer,并将数据操作命令发送给该RegionServerRegionServer接收并执行该命令从而完成本次数据操作。

HBase操作示例

在华为云MRS集群中,您可以通过连接HBase客户端实现创建表,往表中插入数据,修改表,读取表数据,删除表中数据以及删除表的功能。

MRS集群的创建可参考创建集群

1.    安装集群客户端后,登录客户端。

cd /opt/client/

source bigdata_env

kinit hbaseuser   #集群未开启Kerberos认证忽略

2.    执行命令进入HBase Shell

hbase shell

 

hbase:001:0>

hbase:002:0>

3.    HBase中创建一个表并写入数据,例如创建一个学生信息表。

create 'student_info',{NAME => 'i'}

put 'student_info','2021001','i:name','xiaoming'

put 'student_info','2021001','i:age','15'

put 'student_info','2021001','i:address','shenzhen'

put 'student_info','2021002','i:name','xiaohong'

put 'student_info','2021002','i:age','16'

4.    执行命令查询某学生的数据。

scan'student_info',{STARTROW=>'2021001',STOPROW=>'2021001',COLUMNS=>['i:name','i:address']}

 

ROW                                             COLUMN+CELL                                                                                                                 12005000201                                column=i:name, timestamp=2021-06-22T21:32:05.638, value=xiaoming                                                                                  

1 row(s)

5.    删除某个表。

disable'student_info'

drop 'student_info'

image020.png好了,本期云小课就介绍到这里,快去体验MapReduce(MRS)更多功能吧!猛戳这里

 

上一篇:配置Anti-DDoS防护策略 下一篇:数据库存储相关问题解答