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

97 阅读2分钟

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

概述

这节课主要分为四个方面

  1. HDFS 元数据服务的高可用
  2. HDFS 数据存储高可用
  3. HDFS 元数据服务的高扩展性
  4. HDFS 数据存储的高扩展性

关于HDFS高可用和扩展性的一些名词

高可用

  • 复制状态机 Replicated State Machine
  • 操作日志 Op Log / Edit Log
  • RTO 与 RPO
  • 物理日志与逻辑日志
  • 同步复制、半同步复制
  • 心跳
  • 脑裂
  • fence
  • 副本 replica
  • 数据中心网络架构
  • 机架 rack
  • TOR 交换机
  • 数据中心 data center

扩展性

  • 分片 shard
  • 分区 partition
  • 邦联架构 federation
  • 路由 route
  • block pool
  • 代理 proxy
  • 负载均衡 load balance
  • 数据分级 data classification
  • 冷/热数据 hot/cold data
  • 数据搬迁 migration
  • 慢节点
  • 长尾 long tail

元数据服务高可用

服务高可用需求

主要原因:故障不可避免,灾难时有发生

高可用的衡量:

服务可用性指标:

  • MTTR
  • MTTF
  • MTBF

可用性的年华

公式:

高可用形式:

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

为了实现真正意义上的高可用,我们需要让系统自动决策

HDFS在设计中,采用了中心化的元数据管理节点NameNode

NameNode容易成为故障的单点(single point of failure)

HDFS NameNode高可用架构

  • 组件介绍
    • ActiveNameNode:主节点,提供服务,生产日志
    • StandbyNameNode:备节点,消费日志
    • Zookeeper:为自动选主提供的统一协调服务
    • BookKeeper:提供日志存储服务
    • ZKFC:NameNode探活,触发主备切换
    • HA Client:提供自动切换的客户端
    • editLog:操作日志
  • 围绕三个方面来看高可用
    • 节点状态如何保存
    • 操作日志如何同步
    • 如何做到自动切换

状态机复制和日志

状态机复制是实现容错的常规方法

  • 组件
    • 状态机以及副本
    • 变更日志
    • 共识协议

NameNode状态持久化

NameNode操作日志的生产消费

active生产,standly消费(可能有多个)

Quorum机制

Quorum机制:多副本一致性读写

场景:多副本对象存储,用版本号标识数据

数据存储高可用

  • 单机存储的数据高可用机制
  • HDFS的数据高可用机制
  • 考虑网络架构数据的高可用

副本放置策略:

一般为一个本地,一个远端

元数据高扩展性

HDFS namenode是一个集中式服务,部署在单个机器上,内存和磁盘的容量,cpu的计算力都不能无线扩展

\

常见的Scale Out 方案

  • KV模型系统可以使用partition
    • redis
    • Kafka
    • MySQL(分库分表)