
从物理架构上看,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)信息。

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

|
RegionServer 简介
每个 RegionServer 都运行在 HDFS 的一个数据节点上,RegionServer 由如下部分构成:
-
WAL(Write Ahead Log):分布式文件系统上的文件。WAL 保存着一些临时的新数据,以用作后续故障的修复。
-
BlockCache:读操作的内存缓存模块,用来存储内存中频繁读取的数据。当其达到容量上限时,会根据最近最少使用算法(Least Recently Used)将长时间未访问的数据剔除。
-
MemStore:写操作的内存缓存模块。每个 Region 的每一列族(Column Family)都有一个 MemStore,它有序地保存了待写入磁盘的新数据,更新方式与 HFile 存储模式一致。
-
Hfiles:数据以有序键值对的形式存储在 HFile 中。当 MemStore 累积一定数据量后,会顺序写入 HDFS 的新 HFile,这种顺序写入方式避免了磁头频繁移动,显著提升了写入效率。



HMaster
Region 的分配、DDL(创建、删除表)操作由 Hyperbase Master 处理。每个 Master 的职责都包括有:
-
协调 RegionServer
-
负责 Region 的分配,以实现数据恢复和负载平衡。
-
监视所有在集群中的 RegionServer(监听来自 Zookeeper 的消息)。
-
-
管理功能
-
管理用户对表的增删改查操作
-

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

Meta 表
-
Meta 表是一个特殊的 Hyperbase 目录表,它是维护着记录系统中所有 Region 的一个列表,其地址会保存在 Zookeeper 中;
-
Meta 表的数据结构类似于 B 树;
-
Meta 表的构架组成如下:
-
键:Region 的开始键,Region ID
-
值:RegionServer
-
组件间交互介绍
Zookeeper 用来协调分布式系统成员的共享状态信息。RegionServer 和处于活跃状态的 HMaster 通过一个会话(Session)与 Zookeeper 建立连接。Zookeeper 通过心跳机制(Heartbeat)来为活跃的会话维护短暂的临时节点。
