HDFS 高可用机制分析 | 青训营笔记

132 阅读2分钟

HDFS 高可用机制分析 | 青训营笔记

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

HBase 核心数据模型

  • HBase 是存储计算分离架构,以 HDFS 作为分布式存储底座。数据实际存储在 HDFS。
  • HBase 依赖 Zookeeper 实现元数据管理和服务发现。Client 通过 Zookeeper 配置连接到 HBase集群
  • Log-Structured Merge Tree 了解 LSM tree 的基本结构和特性。
  • HBase 写流程:

    • 数据先写入 WAL 持久化,用于宕机时恢复内存里丢失的数据;
    • 再写入内存态 MemStore,以一种跳表(SkipList)数据结构提供有序的数据和高效的随机读写;
    • 当满足特定条件时(比如内存中数据过多,或间隔时间过长),MemStore 数据以 HFile 格式写入 HDFS
  • HBase 读流程

    • 首次读某个 rowkey 时,client 需要从 Zookeeper 获取 hbase:meta 表位于哪个 RegionServer上;
    • 然后访问该 RegionServer 查询 hbase:meta 表该 rowkey 对应 region 所在的 RegionServer B;
    • Client 缓存该位置信息,去 RegionServer B 读取 rowkey;
    • 基于该region内可能存在该 rowkey 的 HFile 和 MemStore 构建一个最小堆,用以全局有序地 scan 数据(具体实现可搜索参考 LSM tree 设计原理)
  • Compaction

    • HBase 基于策略和定期整理 HFile 文件集合,将多个有序小文件合并成若干个有序的大文件。

    • HBase 提供两种 compaction 类型:

      • Minor compaction
      • Major compaction
    • Compaction 触发条件:

      • memstore flush
      • 后台线程周期性检查
      • 手动触发

元数据服务高可用

1.1.1 服务高可用的需求

故障:

  • 硬件故障
  • 软件故障
  • 人为故障

灾难:

  • 机房断电
  • 机房空调停机
  • 机房内网络故障、拥塞 如果HDFS系统不可用:
  • 无法核算广告账单,直接引发收入损失
  • 无法生产数据报表,数据驱动无从谈起
  • 无法进行模型训练,引起用户体验下滑

1.1.2 高可用的衡量

image.png

1.1.3 可用性的年化

image.png

1.1.4 高可用的形式

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

1.2.1 HDFS NameNode 高可用架构

组件介绍

  • ActiveNamenode:主节点,提供服务,生产日志
  • StandbyNamenode:备节点,消费日志
  • Zookeeper:为自动选主提供统一协调服务
  • BookKeeper:提供日志存储服务
  • ZKFC:NameNode 探活、触发主备切换
  • HA Client:提供了自动切换的客户端
  • edit log:操作的日志

image.png

1.2.2 NameNode 块状态维护

区别:

  • Active 即接收,也发起变更
  • Standby 只接收,不发起变更 Content Stale 状态
  • 主备切换后,避免DN的不确定状态 image.png