HDFS 元数据高可用笔记 | 青训营笔记

133 阅读3分钟

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

元数据高可用


(1)高可用的需求

1.服务高可用的需求
  • 故障类型
    • 硬件故障
    • 软件故障
    • 人为故障
  • 灾难:数据中心级别不可用
    • 机房断电
    • 机房空调停机
    • 机房间网络故障、拥塞
2.高可用的衡量

image.png

  • 服务可用性指标
    • MTTR(Mean time to repair)即平均修复时间
    • MTTF(Mean Time To Failure)即修复前平均时间
    • MTBF(Mean Time Between Failure)即平均无故障工作时间
3.高可用的形式

工人的反应、决策时间都更长,高可用需要让系统自动决策。 HDFS 的设计中,采用了中心化的元数据管理节点 NameNode。 NameNode 容易成为故障中的单点(single point of failure)。

  • 服务员可用
    • 热备份
    • 冷备份
  • 故障恢复操作
    • 人工切换
    • 自动切换

(2)HDFS 主备同步实现

1.HDFS NmaeNode 高可用架构

image.png

  • 组件介绍
    • ActiveNamenode:主节点、提供服务、生产日志
    • StandbyNamenode:备节点、消费日志
    • ZooKeeper:为自动选主提供统一协调服务
    • BookKeeper:提供日志存储服务
    • ZKFC:NameNode 探活、触发主备切换
    • HA Client:提供了自动切换的客户端
    • edit log:操作的日志
  • 高可用三个问题
    • 节点状态如何保存
    • 操作日志如何同步
    • 如何做到自动切换
2.基础理论-状态机复制和日志

image.png

  • 状态机复制是实现容错的常规方法
  • 组件
    • 状态机及其副本
    • 变更日志
    • 共识协议
3.NameNode 状态持久化
  • Checkpoint 机制 image.png
  • FSImage 和 EditLog image.png
4.NameNode 操作日志的生产消费

image.png

  • Active 生产、Standby(或者多个)消费
  • 物理日志与逻辑日志
  • 日志系统
    • 高可用
    • 高拓展性
    • 高性能
    • 强一致(有序)
5.NameNode 块状态维护

image.png

  • 回顾
    • DataNode Heartbeat
    • DataNode Block Report
  • 区别
    • Active 即接收,也发起变更
    • Standby 只接收,不发起变更
  • Content Stale 状态
    • 主备切换后,避免 DN 的不确定性

(3)HDFS 自动主备切换

1.分布式协调组件- ZooKeeper

image.png

  • 一般用于提供选主、协调和元数据存储
  • 使用它的组件
    • HDFS、YARN、HBase
    • Kafka、ClickHouse...
  • HA 核心机制
    • Watch
2.自动主备切换流程- Server 侧

image.png

  • ZKFailureController
    • 作为外部组件,驱动 HDFS NameNode 的主备切换
  • 轮询探活
  • 脑裂问题
  • Fence 机制
3.自动主备切换流程- Client 侧

image.png

  • 核心机制:StandbyException
  • Client 自动处理

(4)HDFS 日志系统 BookKeeper 简介

1.BookKeeper 架构

image.png

  • BookKeeper 存储日志
    • 低延时
    • 持久性
    • 强一致性
    • 读写高可用
2.Quorum 机制

image.png

  • Quorum 机制:多副本一致性读写
  • 场景:多副本对象存储,用版本号标识数据新旧
  • 规则 image.png
3.BookKeeper Quorum

image.png

  • Sloppy Quorum 机制
  • 日志场景:顺序追加、只写
  • Write Quorum:写入副本数
  • ACK Quorum:相应副本数
4.BookKeeper Enseble

image.png

  • Ensemble 机制
  • Round-Robin Load Balancer
    • 第一轮:1,2,3
    • 第二轮:2,3,4
    • 第三轮:3,4,1
    • 第四轮:4,1,2
  • 优势:数据均衡