Code前端首页关于Code前端联系我们

HBase 架构图(组件、Region、HBase Manager、ZooKeeper)

terry 2年前 (2023-09-26) 阅读数 45 #数据库

HBase 组件

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

Hadoop DataNode 存储由区域服务器管理的数据。所有HBase数据都存储在HDFS文件中。区域服务器与 HDFS DataNode 接口,这允许区域服务器提供的数据实现数据局部性(数据放置在需要的地方附近)。 HBase 数据在写入时是本地的,但在移动区域时,数据在压缩之前不是本地的。

NameNode 存储组成文件的所有物理数据块的元数据信息。

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

Regions

HBase表根据行键范围水平划分为“Regions”。区域包含表中该区域的开始键和结束键之间的所有条目。区域被分配给称为区域服务器的集群节点,这些节点用于读取和写入数据。单个区域服务器可以服务大约 1000 个区域。

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

HBase Master

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

主站负责:

  • 协调区域服务器
    • 在启动时分离区域并重新分配区域以进行恢复或负载平衡。
    • 监控集群中的所有RegionServer实例(监听zookeeper通知)。
  • 管理功能

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

ZooKeeper:协调器

HBase 使用 ZooKeeper 作为分布式协调服务来维护集群中服务器的状态。 Zookeeper 管理哪些服务器处于活动状态且可用,并通知服务器故障。 Zookeeper 使用共识来确保共同的共享状态。需要注意的是,要有三到五台机器才能达成共识。

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

组件如何协同工作:组件如何协同工作

Zookeeper 用于协调分布式系统成员之间的共享状态信息。区域服务器和活动 HMaster 使用会话连接到 ZooKeeper。 ZooKeeper 通过心跳维护活动会话的临时节点。

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

每个区域服务器都会创建一个临时节点。 HMaster 监视这些节点的可用区域服务器,并监视这些节点的服务器故障。 HMasters 创建临时节点。 Zookeeper 确定第一个主机并使用它来确保只有一个主机处于活动状态。活动 HMaster 向 Zookeeper 发送心跳,非活动 HMaster 监听来自活动 HMaster 的错误消息。

如果Region Server或Active HMaster发送心跳失败,则会话过期,对应的临时节点被删除。更新的侦听器会收到已删除节点的通知。主用 HMaster 监听 Region Server,并在 Region Server 发生故障时恢复。不活动的 HMaster 无法监控活动的 HMaster。如果Active HMaster发生故障,Inactive HMaster将成为Active HMaster。

HBase 首次读取或写入:HBase 第一次读取或写入

HBase 有一个特殊的目录表,称为 META 表,用于存储集群中 Region 的位置。 ZooKeeper存储META表的位置。

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

  1. 客户端从 ZooKeeper 接收托管 META 表的区域服务器。
  2. 客户请求.META。 server 获取与其正在访问的行键对应的区域服务器。客户端缓存此信息以及 META 表的位置。
  3. 它从相应的区域服务器接收一行。

对于将来的读取,客户端使用缓存来检索之前读取的 META 位置和行键。随着时间的推移,它不需要查询META表,除非由于移动而丢失了某个区域,否则它会再次查询并刷新缓存。

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

  • 此元表是一个 HBase 表,保存系统中所有区域的列表。
  • .元。董事会就像一棵 B 树。
  • .META 结构。表格如下:
    • Key:Region Start Key,Region ID
    • Values:RegionServer

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

Region Server 组件

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

  • WAL:预写日志是分布式文件系统中的文件。 WAL用于存储未持久存储的新数据;它用于故障恢复。
  • BlockCache:这是一个读缓存。它将经常读取的数据存储在内存中。最近使用的数据满后将被推出。
  • MemStore:这是一个写缓存。它存储尚未写入磁盘的新数据。在写入磁盘之前对其进行排序。每个区域和列族都有一个 MemStore。
  • Hfiles 将行作为排序键值存储在磁盘上。

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

HBase写入步骤(一)

当客户发出销售请求时,第一步是将数据写入处方日志,即WAL。

  • - 更改将附加到存储在磁盘上的 WAL 文件的末尾。
  • - WAL 用于在服务器崩溃时恢复未写入的数据。

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

HBase写入步骤(2)

数据一旦写入WAL,就会被放入MemStore中。然后将销售请求的确认返回给客户。

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

HBase MemStore

MemStore 将内存中的更新存储为存储在 HFile 中的排序键值。每个列族有一个 MemStore。更新按列族排序。

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

HBase Region Flush

当MemStore收集到足够的数据时,整个排序的数据集将写入HDFS中的新HF文件中。 HBase 在每个包含实际单元格或 KeyValue 实例的列族中使用多个 HFile。随着 MemStore 中排序的 KeyValue 更改作为文件刷新到磁盘,这些文件会随着时间的推移而创建。

注意,这是HBase列族数量有限的原因之一。每个CF只有一个MemStore;当CF满时,它们全部被刷新。它还存储最后写入的序列号,以便系统知道到目前为止已保存的内容。

最高序列号作为元字段存储在每个 HF 文件中,以反映持久性和持久性位置。当一个区域启动时,会计算序列号,并将最高的序列号用作新更改的序列号。

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

HBase HFile

数据存储在包含排序键/值的 HF 文件中。当MemStore收集到足够的数据时,整个排序的KeyValue集合将被写入HDFS中的新的HF文件中。这是一种顺序书写方式。这是非常快的,因为它避免了移动磁盘驱动器磁头。

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

HBase HFile结构

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

  • 键值对按升序存储
  • 键值索引根据行键指向64KB“块”的键值数据
  • 每个块都有自己的页索引每个块都放置在中间索引中。根索引
  • 指向中间索引

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门