这是我参与「第四届青训营 」笔记创作活动的第 12 天!
HBase 架构设计
架构设计
- 主要组件包括:
- HMaster:元数据管理、集群调度、保活
- RegionServer:提供数据读写服务、每个实例负责若干互不重叠的 rowkey 区间内的数据
- ThriftServer—:提供 Thrift API 读写的代理层
- 依赖组件包括:
- ZooKeeper:分布式一致性共识协作管理,例如 HMaster 选主、任务分发、元数据变更管理等。
- HDFS:分布式文件系统、HBase 数据存储底座
Hmaster
主要职责
- 管理 RegionServer 实例生命周期,保证服务可用性
- 协调 RegionServer 数据故障恢复,保证数据可靠性
- 集中管理集群元数据,执行负载均衡等维护集群稳定性
- 定期巡检元数据,调整数据分布,清理废弃数据等
- 处理用户主动发起的元数据操作如建表、删表等
主要组件
- ActiveMasterManager:管理 HMaster 的 active/backup 状态
- ServerManager:管理集群内 RegionServer 的状态
- AssignmentManager:管理数据分片(region)的状态
- SplitWalManager:负责故障数据恢复的 WAL 拆分工作
- LoadBalancer:定期巡检、调整集群负载状态
- RegionNormalizer:定期巡检并拆分热点、整合碎片
- CatalogJanitor:定期清理废弃的 HFile/WAL 等文件
- MasterFileSystem:封装访问的 HDFS 的客户端 SDK
RegionServer
主要职责
- 提供部分 rowkey 区间数据的读写服务
- 如果负责 meta 表,向客户端 SDK 提供 rowkey 位置信息
- 认领 HMaster 发布的故障恢复任务,帮助加速数据恢复过程
- 处理 HMaster 下达的元数据操作,如 region 打开/关闭/分裂/合并操作等
主要组件
- MemStore:基于 SkipList 数据结构实现的内存态存储,顶定期批量写入硬盘
- Write-Ahead-Log:顺序记录写请求到持久化存储,用于故障恢复内存中丢失的数据
- Store:对应一个 Column Family 在一个 region 下的数据集合,通常包括多个文件
- StoreFile:即 HFile,表示 HBase 在 HDFS 存储数据的文件格式,其内数据按 rowkey 字典序有序排列
- BlockCache:HBase 以数据块为单位读取数据并缓存在内存中以加速重复数据的读取
ZooKeeper 主要职责
- HMaster 登记信息,对 ative/backup 分工达成共识
- RegionServer 登记信息,失联时 HMaster 保活处理
- 登记 meta 表位置信息,供 SDK 查询读写位置信息
- 供 HMaster 和 RegionServer 协作处理分布式任务
ThriftServer 主要职责
- 实现 HBase 定义的 Thrift API,作为代理层向用户提供 RPC 读写任务
- 用户可根据 IDL 自行生成客户端实现
- 独立于 RegionServer 水平扩展,用户可访问任意 ThriftServer 实例
- scan 操作较特殊,需要同时实力维护 scam 状态