●面向列:面向列(族)的存储、检索与权限控制
●稀疏:表中为空(null)的列不占用存储空间
名称 | 名称 |
---|---|
Master | 又叫HMaster,在HA模式下,包含主用Master和备用Master。1.主用Master:负责HBase中RegionServer的管理,包括表的增删改查;RegionServer的负载均衡,Region分布调整;Region分裂以及分裂后的Region分配;RegionServer失效后的Region迁移等。2.备用Master:当主用Master故障时,备用Master将取代主用Master对外提供服务。故障恢复后,原主用Master降为备用。 |
Client | Client使用HBase的RPC机制与Master、RegionServer进行通信。Client与Master进行管理类通信,与RegionServer进行数据操作类通信。 |
RegionServer | RegionServer负责提供表数据读写等服务,是HBase的数据处理和计算单元。RegionServer一般与HDFS集群的DataNode部署在一起,实现数据的存储功能。 |
ZooKeeper集群 | ZooKeeper为HBase集群中各进程提供分布式协作服务。各RegionServer将自己的信息注册到ZooKeeper中,主用Master据此感知各个RegionServer的健康状态。 |
HDFS集群 | HDFS为HBase提供高可靠的文件存储服务,HBase的数据全部存储在HDFS中。 |
HBase以表的形式存储数据,数据模型如下图HBase数据模型所示。表中的数据划分为多个Region,并由Master分配给对应的RegionServer进行管理。
每个Region包含了表中一段RowKey区间范围内的数据,HBase的一张数据表开始只包含一个Region,随着表中数据的增多,当一个Region的大小达到容量上限后会分裂成两个Region。您可以在创建表时定义Region的RowKey区间,或者在配置文件中定义Region的大小。
●概念介绍
名称 | 描述 |
---|---|
RowKey | 行键,相当于关系表的主键,每一行数据的唯一标识。字符串、整数、二进制串都可以作为RowKey。所有记录按照RowKey排序后储。 |
Timestamp | 每次数据操作对应的时间戳,数据按时间戳区分版本,每个Cell的多个版本的数据按时间倒序存储。 |
Cell | HBase最小的存储单元,由Key和Value组成。Key由row、column family、column qualifier、timestamp、type、MVCC version这6个字段组成。Value就是对应存储的二进制数据对象。 |
Column Family | 列族,一个表在水平方向上由一个或多个Column Family组成。一个CF(Column Family)可以由任意多个Column组成。Column是CF下的一个标签,可以在写入数据时任意添加,因此CF支持动态扩展,无需预先定义Column的数量和类型。HBase中表的列非常稀疏,不同行的列的个数和类型都可以不同。此外,每个CF都有独立的生存周期(TTL)。可以只对行上锁,对行的操作始终是原始的。 |
Column | 列,与传统的数据库类似,HBase的表中也有列的概念,列用于表示相同类型的数据。 |
●RegionServer数据存储
RegionServer主要负责管理由HMaster分配的Region,RegionServer的数据存储结构如下图 RegionServer的数据存储结构所示。
上图 RegionServer的数据存储结构中Region的各部分的说明如表 Region结构说明所示。
Region结构说明
名称 | 描述 |
---|---|
Store | 一个Region由一个或多个Store组成,每个Store对应图 HBase数据模型中的一个Column Family。 |
MemStore | 一个Store包含一个MemStore,MemStore缓存客户端向Region插入的数据,当RegionServer中的MemStore大小达到配置的容量上限时,RegionServer会将MemStore中的数据“flush”到HDFS中。 |
StoreFile | MemStore的数据flush到HDFS后成为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等信息。
元数据表和用户表的映射关系如下图元数据表和用户表的映射关系所示。
●数据操作流程
HBase数据操作流程如下图数据操作流程所示。
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,并将数据操作命令发送给该RegionServer,RegionServer接收并执行该命令从而完成本次数据操作。
为了提升数据操作的效率,HBase Client会在内存中缓存“hbase:meta”和用户表Region的信息,当应用程序发起下一次数据操作时,HBase Client会首先从内存中获取这些信息;当未在内存缓存中找到对应数据信息时,HBase Client会重复上述操作。
2.HMaster通过ZooKeeper随时感知各个HRegionServer的健康状况,以便进行控制管理。
3.HBase也可以部署多个HMaster,类似HDFS NameNode,当HMaster主节点出现故障时,HMaster备用节点会通过ZooKeeper获取主HMaster存储的整个HBase集群状态信息。即通过ZooKeeper实现避免HBase单点故障问题的问题。
免责申明:
本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!
《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu
《数栈V6.0产品白皮书》下载地址:https://fs80.cn/cw0iw1
想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs
同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack