当前位置: 移动技术网 > IT编程>数据库>Redis > HBase架构、数据存储结构及工作原理分析

HBase架构、数据存储结构及工作原理分析

2020年07月23日  | 移动技术网IT编程  | 我要评论

一、HBase介绍

  1. 定义:HBase是一个面向列存储的数据库,它是一个分布式的hash map,并能够利用HDFS的可靠性来做存储功能。
  2. 特点
    1. 数据访问速度快,响应时间月约2-20ms
    2. 支持随机读写,每个节点20k~100k+ops/s
    3. 可扩展性,可扩展到20000+节点
  3. 应用场景
    1. 增量数据-时间序列数据——高容量、高速写入
    2. 信息交换-消息传递——高容量、高速读写
    3. 内容服务-Web后端应用程序——高容量、高速读写、
    4. 高并发

二、HBase架构

HBase是一种Master/slaves架构,主要的组成由下图可以看出,分别为:Client、zookeeper、HMaster、HRegionServer、HDFS。
在这里插入图片描述

1.主架构
(1).Client

  Client(客户端)可以是HBase shell,Java API或者是RestAPI。Client 就是用来访问 HBase 数据库的,它不仅提供了访问接口,还维护了对应的缓存(cache)来加速 HBase 的访问。Client 端的缓存主要是缓存 Region 的位置信息,减少获取元数据的时间。
  当 Client 端没有缓存的时候(第一次请求),会加载 Region 的位置信息到Client 端,后面直接使用 cache 中的信息,如果出现重试,则会重新获取 Region 的位置信息,更新 Client 端的 cache。

(2).Zookeeper

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

  1. 通过Zookeeper来保证集群中只有一个HMaster在运行,如果HMaster异常,会通过选举机制产生新的HMaster来提供服务
  2. 通过Zookeeper来监控HRegionServer的状态,当HRegionServer有异常,通过Master会受到Zookeeper消息通知HRegionServer上下线的信息
  3. 通过ZooKeeper存储元数据的统一入口地址
(3).HMaster

  HMaster节点是集群中的主节点,可以配置多个,用来实现HA,它的主要职责如下:

  1. 处理元数据的变更
  2. 监控HRegionServer,处理HRegionServer的故障转移。当某个HRegionServer挂掉时,Zookeeper会将分配在该HRegionServer上的HRegion分配到其他HRegionServer上进行管理
  3. 负责HRegionServer的负载均衡
  4. 通过Zookeeper发布自己的位置给客户端
  5. HRegion分裂后,负责新的HRegion的分配
()4.HRegionServer

  HRegionServer直接负责用户的读写请求,它的功能如下:

  1. 负责和底层HDFS的交互,存储数据到HDFS上
  2. 处理分配给它的HRegion
  3. 刷新缓存到HDFS上
  4. 维护HLog,Hlog是一个容错机制
  5. 处理来自客户端的读写请求。HRegionServer是管理数据的,所以客户端的读写请求最终都要由HRegionServer来处理
  6. 负责处理HRegion变大后的拆分工作
  7. 负责StoreFile的合并工作
(5).HDFS

  HDFS为HBase提供最终的底层数据存储服务,为HBase提供高可用的支持,具体功能如下:

  1. 提供元数据和表数据的底层分布式存储服务
  2. 数据多副本,保证高可靠性和高可用性
2.其他组成部分
(1).Write-Ahead Logs

   Write-Ahead Logs 也叫预写日志,在HBase中为HLog,HLogs存储在HDFS上。当HBase读写数据时,数据不是直接就写进磁盘的,也不是直接写入内存的,是首先写入到HLogs中,然后再写到内存中为了就是防止数据丢失。HLog是每一个HRegionServer对应一个。

(2).HRegion

   HRegion可以看成是表的横向切分,HBase表的分片,HBase每个表都会根据RowKey值被切分成不同的HRegion分散存储在HRegionServer中。一个HRegionServer中可以有多个HRegion。
   下图是HRegion、Table、HRegionServer的关系。
在这里插入图片描述
注:一个HRegion只能在一个HRegionServer上,不可以跨多个HRegionServer·

(3).Store

  每一个Region内部,又分为多个Store,一个Store对应表中的一个列族。也就是说一个Store存储了对应表该列族下的部分数据。

(4).MemStore

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

(5).HFile

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

三、HBase数据存储结构

  HBase的特点是列的灵活性。在列族中,可以指定任意多的列,在列数据为空的情况下也不会占用存储空间。HBase的底层存储的数据是KeyValue格式的数据。

1.RowKey

  RowKey是用来检索数据的主键,不仅如此,HBase表数据会按照RowKey进行排序,并在HBase达到一定大小后,会按照RowKey范围进行裂变。
  Rowkey的值可以是任意字符串(最大长度为64KB)。在存储的时候,数据会按照RowKey进行字典排序,所以在设计RowKey的时候,要充分利用这个特性。

2.Column Family

  列族是HBase对表在纵向上的优化,列族是在纵向进行切分的,将一列分成一组进行管理。
  列族是表的schema的一部分,所以在时候前需要进行定义。每一个列族对应一个Store,也对应HDFS上的一个目录,类似于HBase对表按列族进行分区一样。

3.Time Stamp

  HBase中通过RowKey和ColumnFamily:column来确定一个存储单元,也就是一个cell。每一个cell中都保存着同一个数据的多个版本。版本需要 根据时间戳来索引。时间戳一般是由HBase在写入数据时自动赋值的。每一个cell中,每一个版本的数据都是按照时间顺序倒序排列的,最新的数据在最前面。

四、HBase原理

1.元数据存储

  HBase中有一个系统表meta用来存储HBase的元数据信息。该表记录了每一个表的Region地址,还有其他的一些信息。
  在zookeeper中存储了meta的位置,客户端可以通过zookeeper查找到meta表的位置。meta表示HBase中的一张表,是由HRegionServer来管理的。

2.读流程

  HBase的读数据流程如图所示
在这里插入图片描述
具体的工作流程如下:

  1. Client先访问zookeeper,请求获取meta的位置,然后通过meta表来读取Region的位置,从而获取meta表中的数据,且meta表中还存储了用户表的Region信息
  2. zookeeper会根据请求返回meta表所在RegionServer的位置。
  3. 用户根据RowKey在meta表中的位置来找到对应Region的信息
  4. 然后在找到对应的RegionServer
  5. 查找对应的Region
  6. 首先从MemStore找数据,如果没有再从BlockCache里面找
  7. 如果BlcokCache也没有,再到StoreFile里面找
  8. 如果是从StoreFile里面读取的数据,不会 直接返回给客户端,而是先写入到BlockCache里,再返回给客户端
    上述流程可以描述为下图:
    在这里插入图片描述
3.写流程

  HBase的写流程具体如下图所示
在这里插入图片描述
具体步骤为:

  1. Client访问zookeeper,获取meta表的位置
  2. 访问meta表,然后镀组meta表中的数据
  3. 根据namespace、表名、Rowkey,在meta表中找到该Rowkey应该写到哪一个Region
  4. 找到对应的Region对应的RegionServer后,发送写数据的请求
  5. RegionServer将数据先写到HLog中,为了数据的持久化和数据恢复
  6. 再讲数据写到MemStore中
  7. 反馈给Client写入成功
4.数据Flush过程

  从上面写数据可以看出,HBase写数据是写入到内存中就返回给客户端了,并不是直接落盘,这也就是为什么HBase插入数据会比较快。那什么时候数据会落入磁盘中呢?当MemStore数据达到阈值时(默认是128M),RegionServer会将数据刷到HDFS上,生成HFile文件,然后再将内存中的数据删除,同时还删除HLog中的历史数据。

本文地址:https://blog.csdn.net/qq_38497133/article/details/107495605

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网