HBase 笔记 | 青训营笔记

146 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第 12 天!

HBase 架构设计


架构设计

image.png

  • 主要组件包括:
    • HMaster:元数据管理、集群调度、保活
    • RegionServer:提供数据读写服务、每个实例负责若干互不重叠的 rowkey 区间内的数据
    • ThriftServer—:提供 Thrift API 读写的代理层
  • 依赖组件包括:
    • ZooKeeper:分布式一致性共识协作管理,例如 HMaster 选主、任务分发、元数据变更管理等。
    • HDFS:分布式文件系统、HBase 数据存储底座

Hmaster

image.png

主要职责
  • 管理 RegionServer 实例生命周期,保证服务可用性
  • 协调 RegionServer 数据故障恢复,保证数据可靠性
  • 集中管理集群元数据,执行负载均衡等维护集群稳定性
  • 定期巡检元数据,调整数据分布,清理废弃数据等
  • 处理用户主动发起的元数据操作如建表、删表等
主要组件
  • ActiveMasterManager:管理 HMaster 的 active/backup 状态
  • ServerManager:管理集群内 RegionServer 的状态
  • AssignmentManager:管理数据分片(region)的状态
  • SplitWalManager:负责故障数据恢复的 WAL 拆分工作
  • LoadBalancer:定期巡检、调整集群负载状态
  • RegionNormalizer:定期巡检并拆分热点、整合碎片
  • CatalogJanitor:定期清理废弃的 HFile/WAL 等文件
  • MasterFileSystem:封装访问的 HDFS 的客户端 SDK

RegionServer

image.png

主要职责
  • 提供部分 rowkey 区间数据的读写服务
  • 如果负责 meta 表,向客户端 SDK 提供 rowkey 位置信息
  • 认领 HMaster 发布的故障恢复任务,帮助加速数据恢复过程
  • 处理 HMaster 下达的元数据操作,如 region 打开/关闭/分裂/合并操作等
主要组件
  • MemStore:基于 SkipList 数据结构实现的内存态存储,顶定期批量写入硬盘
  • Write-Ahead-Log:顺序记录写请求到持久化存储,用于故障恢复内存中丢失的数据
  • Store:对应一个 Column Family 在一个 region 下的数据集合,通常包括多个文件
  • StoreFile:即 HFile,表示 HBase 在 HDFS 存储数据的文件格式,其内数据按 rowkey 字典序有序排列
  • BlockCache:HBase 以数据块为单位读取数据并缓存在内存中以加速重复数据的读取

ZooKeeper 主要职责

image.png

  • HMaster 登记信息,对 ative/backup 分工达成共识
  • RegionServer 登记信息,失联时 HMaster 保活处理
  • 登记 meta 表位置信息,供 SDK 查询读写位置信息
  • 供 HMaster 和 RegionServer 协作处理分布式任务

ThriftServer 主要职责

image.png

  • 实现 HBase 定义的 Thrift API,作为代理层向用户提供 RPC 读写任务
  • 用户可根据 IDL 自行生成客户端实现
  • 独立于 RegionServer 水平扩展,用户可访问任意 ThriftServer 实例
  • scan 操作较特殊,需要同时实力维护 scam 状态