联 系 我 们
售前咨询
售后咨询
微信关注:星环科技服务号
更多联系方式 >
1.3 架构与组件
更新时间:8/29/2024, 7:28:36 AM

从物理架构上看,Hyperbase 是包含三类服务器的主从式架构。RegionServer 负责响应用户 I/O 请求,并向 HDFS 中读写数据。每当访问数据时,客户端(Client)会直接与 RegionServer 建立连接。Region 的分配、DDL(创建、删除表)操作则由 HMaster 来处理。Zookeeper,它作为 HDFS 的一部分,负责维护集群的健康状态、避免 HMaster 单点问题。

Hadoop DataNode 存储着由 RegionServer 正在管理的数据。而所有 Hyperbase 的数据都存储在 HDFS 文件中。RegionServer 和 HDFS DataNode 并置,使得 RegionServer 处理的数据具有数据本地性(Data Locality),即可实现数据的本地读写,避免网络延迟。但一旦所属的 Region 被移走,则需要从远端获取数据,直到执行 Compaction 操作。 NameNode 为组成文件的物理数据块维护着它们的元数据(Metadata)信息。

Arch1
图 2. Hyperbase 数据存储架构

RegionServer

Region 简介

Hyperbase 表按照行键(Row Key)被水平地分割成一个个 Region。每个 Region 包含了表中从该 Region 的开始键到结束键之间的所有行。这些 Region 被指派给集群中的节点,这些节点便是 RegionServer,它们负责数据的读写。

Arch2
图 3. Region 分布
  • 默认 Region 大小 3.5G,我们推荐每个 RegionServer 管理 600 个以下的 Region ,这个值也和集群内存有关。

  • 随着 Region 数量增加,可以适当追加 Region server 内存,但是内存越大,一旦清理内存(gc),用时也会变长;可以采用 Region server 多实例的方式,增加单节点上 Region server 实例,而不用增加单个 Region server 内存。

RegionServer 简介

每个 RegionServer 都运行在 HDFS 的一个数据节点上,RegionServer 由如下部分构成:

  • WAL(Write Ahead Log):分布式文件系统上的文件。WAL 保存着一些临时的新数据,以用作后续故障的修复。

  • BlockCache:读操作的内存缓存模块,用来存储内存中频繁读取的数据。当其达到容量上限时,会根据最近最少使用算法(Least Recently Used)将长时间未访问的数据剔除。

  • MemStore:写操作的内存缓存模块。每个 Region 的每一列族(Column Family)都有一个 MemStore,它有序地保存了待写入磁盘的新数据,更新方式与 HFile 存储模式一致。

  • Hfiles:数据以有序键值对的形式存储在 HFile 中。当 MemStore 累积一定数据量后,会顺序写入 HDFS 的新 HFile,这种顺序写入方式避免了磁头频繁移动,显著提升了写入效率。

Arch11
图 4. MemStore 数据存储结构
Arch13
图 5. 数据以有序键/值形成存储在 HFile 中
Arch8
图 6. RegionServer 组件

HMaster

Region 的分配、DDL(创建、删除表)操作由 Hyperbase Master 处理。每个 Master 的职责都包括有:

  • 协调 RegionServer

    • 负责 Region 的分配,以实现数据恢复和负载平衡。

    • 监视所有在集群中的 RegionServer(监听来自 Zookeeper 的消息)。

  • 管理功能

    • 管理用户对表的增删改查操作

Arch3
图 7. HMaster 协调 RegionServer 与管理集群

Zookeeper

Hyperbase 用 Zookeeper 来提供分布式协调服务,以维护集群中服务器的状态。Zookeeper 留存了服务器健康状态与是否可用的信息,并提供服务器故障通知。Zookeeper 用 Consensus 协议来保障共享状态。需要注意的是,一份 Consensus 协议需要 3 个或 5 个机器的参与。

Arch4
图 8. Zookeeper 维护 Hyperbase 集群状态信息
Meta 表
  • Meta 表是一个特殊的 Hyperbase 目录表,它是维护着记录系统中所有 Region 的一个列表,其地址会保存在 Zookeeper 中;

  • Meta 表的数据结构类似于 B 树;

  • Meta 表的构架组成如下:

    • 键:Region 的开始键,Region ID

    • 值:RegionServer

组件间交互介绍

Zookeeper 用来协调分布式系统成员的共享状态信息。RegionServer 和处于活跃状态的 HMaster 通过一个会话(Session)与 Zookeeper 建立连接。Zookeeper 通过心跳机制(Heartbeat)来为活跃的会话维护短暂的临时节点。

Arch5
图 9. 组件协调工作架构