HBase的数据读写流程解析

HBase的数据读写流程解析

摘 要:随着互联网Web2.0的兴起,数据量在以指数级飞速增长的同时数据类型也越来越多样化,因此如何实现海量多样化数据的存储和检索成为急需解决的问题。相比传统关系型数据库,非关系型数据库为我们提供了高可用、高可扩展的大规模数据存储方案。与Hadoop集成的HBase数据库是其中的典型代表,本文则以NoSQL关系型数据库之中的HBase数据库为例,就其数据的读写流程进行解析。
关键字:非关系型数据库,HBase,读写流程

引言
几乎是同时起步的关系型数据库技术和非关系型数据库技术,当时由于存储特点、应用领域和供求关系的差异,前者得到快速发展,而后者长期发展缓慢[ ]。面对海量数据的到来,关系型数据库正面临极大挑战,传统的数据库已经无法满足应用场景的需要,由此非关系型数据库应运而生。

1. 关系型数据库与非关系型数据库
1.1 关系型数据库与非关系型数据库对比

与快速转换的应用架构和数据处理技术相比,关系型数据库技术在这几十年间的发展缓慢。关系型数据库与非关系型数据库的对比见下表1。
表1 关系型数据库与非关系型数据库区别
在这里插入图片描述

之所以NoSQL数据库发展起来,并迅速被人们所接纳,是因为其与关系型数据库对比,在实现高并发读写、海量数据的高效率存储和访问、高扩展性和高可用性、数据模型灵活上有着极大的优势[ ]。
1.2 HBase的特点
HBase是基于HDFS的大型NoSQL数据库,具有高可靠性、高性能、可伸缩等特点,可以实时进行读写操作,并提供大规模数据集的随机访问。HBase的具体特点如下[ ]:
 海量数据存储。HBase的使用场景为PB级别海量数据的存储,由于HBase具有良好的扩展性,因此能在几十到百毫秒内返回数据,为海量数据存储提供了便利。
 基于列式存储。HBase在存储数据时是以行和列组成了表,其中列分为若干个列簇,一个列簇由若干个列组成。
 极易扩展。HBase扩展性能好,与HDFS类似的是HBase也是通过横向的扩容能力,利用不断横向增加廉价PC机器来提高存储性能跟计算效率。

HBase的结构

2.1 HBase系统结构
在HBase中,同样采用了主从式的架构,架构如下图1,。用一个master节点协调管理多个RegionServer从属机,主控机负责启动安装,将区域分配给注册的RegionServer,恢复RegionServer的故障,管理和维护HBase表的分区信息。
在这里插入图片描述
图1 HBase架构

客户端并不是直接从Master主服务器上读取数据,而是在获得Region的存储位置信息后,直接从Region服务器上读取数据,因此主控机的负载很轻。

2.2 HBase表结构
HBase是一个松散、多维、持久化存储的映射表, 采用行键、列族、列限定符和时间戳进行索引, 每个值都是没有解释的字符串[ ]。
基于列式存储的HBase存储技术能够有效地处理海量数据,通过列式存储检索能忽略掉部分列数据从而实现更快的检索,通过列式的分布式存储技术将类似的数据存储在一起压缩率更高,检索效率更好。Hbase表结构示意如下表2。

表2 Hbase表结构示意
在这里插入图片描述

每一行有一个RowKey用于唯一地标识和定位行,各行数据按RowKey的字典序排列。时间戳表示对该列记录的更新时间,从上表可见HBase中对于同一RowKey,同一列可以存在多个不同时间的不同值。

3.HBase的读写流程
Client,ZooKeeper,Master,HRegionServer,HDFS等组件共同组成HBase架构HBase存储机制的整个过程如图2。
在这里插入图片描述

图2 Hbase存储机制过程
3.1 Hbase写数据过程
客户端与RegionServer从进行写请求到最终持久化的过程总结如下:
(1)客户端访问Zookeeper,获取meta表所在的RegionServer。
(2)客户端通过刚刚获取的地址访问对应的RegionServer,获取对应表存储的
RegionServer。
(3)客户端向表所在的RegionServer发送Input请求,先预写日志,再将数据
写入MemStore中。(对客户端来说,数据写到内存即结束)
(4)MemStore达到一个阈值后,触发flush操作,则把数据刷成一个StoreFile
文件。
(5)当多个StoreFile文件达到一定的大小后,会触发Compact合并操作,合
并为一个StoreFile。
(6)当Storefile大小超过一定阈值后,会把当前的Region分割为两个(Split),
并由Hmaster分配到相应的HRegionServer,实现负载均衡。

3.2 MemStore 刷写时机
(1)当某个 memstroe 的大小达到了阈值(默认值128M),其所在 region 的
所有 memstore 都会刷写。
(2)当region server中memstore的总大小达到阈值,region会按照其所有
memstore 的大小顺序依次进行刷写。
(3)到达自动刷写的时间,也会触发 memstore flush。
(4)当WAL文件的数量超过某一阈值,region 会按照时间顺序依次进行刷写。

3.3 Hbase的Compact和Split过程
Compact和Split功能贯穿了hbase的整个写入过程。
3.3.1 Compact过程
当memStore容量达到阈值时,会进行Flush操作,生成对应的StoreFile文件。memStore的Flush是以Region为单位的,即一旦某一memStore 发生Flush操作,该Region下的所有memStore也会同时发生Flush操作。随着 memStore不断地Flush,StoreFile的数量越来越多。当StoreFile的数量达到阈值时, 便会触发Compact操作:多个StoreFile合并成一个更大的StoreFile,合并过程包 含版本的合并和数量的删除。
3.3.2 Split过程
合并操作使得StoreFile不断增大,又因为StoreFile存在于Region中,所以Region也会随之增大Region不断变大,当Region的大小达到规定的阈值时,便会发生Split操作:将原Region以某行为分界线拆分成两个大小相近的Region,然后父Region下线[ ]。
StoreFile的Compact和Split流程如图3所示:
在这里插入图片描述
图3 Compact和Split流程
3.4 Hbase读数据过程
就Hbase框架而言,读数据比写慢。Hbase读数据过程如下[ ]:
(1)客户端访问Zookeeper,读取Zookeeper中保存的数据的元数据信息。
(2)根据该信息到对应RegionServer中的META表(META有多个Region,记录
的是业务数据的Region)中读取 Region的元数据信息;
(3)Client找到当前需要访问数据对应的region和 RegionServer发起访问请求,首先扫描MemStore,如果在其中没有找到信息,再去blockcache中读取,如未读到,再 到HFile中读取。读取到数据后会先缓冲到blockCache再返回,memStore 只负责写入的数据的缓存,bolckcache只负责读取数据的缓存。

4.结语
NoSQL数据库和关系型数据库是互补关系,不限定场景时,无法比较谁更强大。关系型数据库能够更好地保持数据的完整性和事务的一致性,并支持对数据的复杂操作,在现实中使用领域更广泛。NoSQL可以更好地在分布式环境下对数据进行管理和查询,在大数据业务领域具有更大价值[ ]。

参考文献

1张淑霞.非关系型数据库在档案界的应用探讨[J].中国档案,2018(9):68-69.
2邱胜海,高成冲,王云霞等.大数据时代非关系型数据库教学与实验改革探索[J].电脑知识与技术,2013,(31):7046-7048.
3NoSQL数据库原理/侯宾编著.—北京:人民邮电出版社,2018.8
4王伟晨.基于非关系型数据库HBase存储技术的检索研究[J].物联网技术,20
20,10(01):103-105.
[5]HBase实现原理及系统架构.https://www.cnblogs.com/gzshan/p/11088199
.html
[6]卓铁农.大数据下的分布式数据库HBase[J].计算机产品与流通,2019(2):10
2-102.
[7]谢地,王同喜.基于HBase的海量数据存储和快速检索[J].电脑知识与技术学
术版,2019,15(2):14-15.
[8]Hbase Region Split compaction过程分析以及优.https://cloud.tencen
t.com/developer/article/1005586
[9]俞子波.HBase分布式缓存策略的研究与设计[D],2017.
[10]张炬.解读HBase读写流程[J].电脑迷,2018(14):237-237.
[11]底慧萍,王静宁.浅谈非关系型数据库[J].河北农机,2019,(11):50.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

kyfc

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

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

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

打赏作者

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

抵扣说明:

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

余额充值