图解HBase架构(组件、Regions、HBase Master、ZooKeeper)

2023年 7月 11日 63.6k 0

HBase组件

在物理上,HBase是由三种类型的servers组成的主从型架构。Region servers服务于数据的读取和写入。客户端在访问数据时,直接与HBase Region servers 进行通信。区域分配、DDL(创建、删除表)操作由HBase主进程处理。Zookeeper是HDFS的一部分,它维护着一个活的集群状态。

Hadoop DataNode存储的是 Region servers 管理的数据。所有HBase的数据都存储在HDFS文件中。 Region servers 与HDFS DataNode对接,这使得 Region servers 所服务的数据能够实现数据定位(将数据放在需要的地方附近)。HBase的数据在写入时是本地的,但当区域被移动时,直到compaction之前,数据都不是本地的。

NameNode维护由文件组成的所有物理数据块的元数据信息。

图解HBase架构(组件、Regions、HBase Master、ZooKeeper)

Regions

HBase表按行键范围横向划分为 "Regions"。一个region包含该区域的开始键和结束键之间的表中的所有记录。Regions被分配给集群中的节点,称为 "Region Servers",这些节点为数据的读取和写入服务。一个Region Servers可以服务于大约1000个region。

图解HBase架构(组件、Regions、HBase Master、ZooKeeper)

HBase Master

Region分配、DDL(创建、删除表)操作由Hbase Master处理。

一个 master 负责:

  • 协调region servers
    • 在启动时分配region,重新分配region用于恢复或负载平衡。
    • 监控集群中的所有 RegionServer 实例(监听来自 zookeeper 的通知)。
  • 管理功能

图解HBase架构(组件、Regions、HBase Master、ZooKeeper)

ZooKeeper: The Coordinator

HBase使用ZooKeeper作为分布式协调服务来维护集群中的服务器状态。Zookeeper维护哪些服务器是活的、可用的,并提供服务器故障通知。Zookeeper使用共识(consensus)来保证共同的共享状态。需要注意的是,应该有三台或五台机器进行共识。

图解HBase架构(组件、Regions、HBase Master、ZooKeeper)

How the Components Work Together:各组件如何共同工作

Zookeeper用于协调分布式系统成员的共享状态信息。Region servers 和活动的HMaster用会话连接到ZooKeeper。ZooKeeper通过心率来维护活动会话的临时节点。

图解HBase架构(组件、Regions、HBase Master、ZooKeeper)

每个Region Server都会创建一个临时节点。HMaster监控这些节点以发现可用的Region Server,同时它还监控这些节点是否有服务器故障。HMasters 创建临时节点。Zookeeper确定第一个并使用它来确保只有一个master是活动的。活动的HMaster向Zookeeper发送心跳,非活动的HMaster监听活动的HMaster故障通知。

如果Region Server或活动中的HMaster未能发送心跳,则会话过期,并删除相应的临时节点。 更新的监听者会收到被删除节点的通知。活动的HMaster监听Region Server,并在失败时恢复区域服务器。Inactive HMaster监听active HMaster失败,如果active HMaster失败,则Inactive HMaster变为active HMaster。

HBase First Read or Write:HBase第一次读或写

有一个特殊的HBase目录表,叫做META表,它保存了集群中regions的位置。ZooKeeper存储了META表的位置。

这是客户端第一次读取或写入HBase时发生的事情:

  • 客户端从ZooKeeper中获得托管META表的Region server。
  • 客户端将查询.META.服务器,以获得它想要访问的row key对应的Region server。客户端会将此信息与META表的位置一起缓存。
  • 它将从对应的Region server中获取该行。
  • 对于未来的读取,客户端使用缓存来检索META位置和之前读取的row keys。随着时间的推移,它不需要查询META表,除非因为某个Region 移动而没有命中,否则它将重新查询并更新缓存。

    图解HBase架构(组件、Regions、HBase Master、ZooKeeper)

    • 这个meta表是一个HBase表,它保留了系统中所有区域的列表。
    • .meta.表就像一个b树。
    • .META.表的结构如下:
      • Key: region start key,region id
      • Values: RegionServer

    图解HBase架构(组件、Regions、HBase Master、ZooKeeper)

    Region Server Components

    Region Server运行在一个HDFS数据节点上,有以下组件。

    • WAL:Write Ahead Log是分布式文件系统中的一个文件。WAL是用来存储还没有被持久化到永久存储的新数据;它用于故障时的恢复。
    • BlockCache:是读取缓存。它将频繁读取的数据存储在内存中。最近最少使用的数据在满时被驱逐。
    • MemStore:是写缓存。它存储还没有写到磁盘的新数据。它在写到磁盘之前会被排序。每个列族每个区域有一个MemStore。
    • Hfiles将行作为排序的KeyValues存储在磁盘上。

    图解HBase架构(组件、Regions、HBase Master、ZooKeeper)

    HBase Write Steps (1)

    当客户端发出Put请求时,第一步是将数据写到 write-ahead日志,即WAL。

    • - Edits被附加到存储在磁盘上的WAL文件的末尾。
    • - WAL是用来恢复未被写入的数据,以备服务器崩溃时恢复未被写入的数据。

    图解HBase架构(组件、Regions、HBase Master、ZooKeeper)

    HBase Write Steps (2)

    一旦数据被写入WAL,就会被放置到MemStore中。然后,put请求确认返回给客户端。

    图解HBase架构(组件、Regions、HBase Master、ZooKeeper)

    HBase MemStore

    MemStore以排序的KeyValues的形式在内存中存储更新,就像在HFile中存储一样。每个列族有一个MemStore。更新是按照每个列族进行排序的。

    图解HBase架构(组件、Regions、HBase Master、ZooKeeper)

    HBase Region Flush

    当MemStore积累了足够的数据后,整个排序后的数据集被写入HDFS中的新HFile。HBase在每个列族中使用多个HFile,其中包含实际的单元格,或KeyValue实例。这些文件是随着时间的推移而创建的,因为在MemStores中排序的KeyValue edits作为文件被刷新到磁盘上。

    注意,这就是为什么HBase中的列族数量有限制的原因之一。每个CF只有一个MemStore;当一个CF满了,它们都会被刷新。它还会保存最后写的序列号,这样系统就知道到现在为止持久化了什么。

    最高的序列号被存储为每个HFile中的元字段,以反映持久化的位置和继续持久化的位置。在region启动时,序列号被读取,最高的序列号作为新edits的序列号。

    图解HBase架构(组件、Regions、HBase Master、ZooKeeper)

    HBase HFile

    数据存储在一个HFile中,其中包含排序的Key/Value。当MemStore积累了足够的数据后,整个排序的KeyValue集被写入HDFS中的新HFile。这是一种顺序写法。它的速度非常快,因为它避免了移动磁盘驱动器头。

    图解HBase架构(组件、Regions、HBase Master、ZooKeeper)

    HBase HFile Structure

    一个HFile包含一个多层索引,它允许HBase在不读取整个文件的情况下寻找数据。多层索引就像一个b+树。

    • 键值对的存储顺序依次递增
    • 按行键指向64KB "块 "中的键值数据的键值索引
    • 每个块都有自己的叶子索引
    • 每个块的最后一个键被放在中间索引中。
    • 根索引指向中间索引

    相关文章

    Oracle如何使用授予和撤销权限的语法和示例
    Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
    下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
    社区版oceanbase安装
    Oracle 导出CSV工具-sqluldr2
    ETL数据集成丨快速将MySQL数据迁移至Doris数据库

    发布评论