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

133 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第9天,在第九节课中主要了解到了HDFS高可用与高扩展性机制分析有关的内容。

一、元数据服务高可用

高可用的需求

服务高可用的需求

故障类型:

  • 硬件故障
  • 软件故障
  • 人为故障 灾难:数据中心级别不可用
  • 机房空调停机
  • 机房间网络故障、拥塞 如果HDFS系统不可用,业务停止损失极大

高可用的衡量

  • MTTR、MTTF、MTBF

可用性的年化

  • 可用性:A=MTBF/(MTBF+MTTR)
  • 99.9%,全年

高可用的形式

  • 服务高可用:热备份、冷备份
  • 故障恢复操作:人工切换、自动切换
  • 人工的反应、决策时间都更长,高可用需要让系统自动决策
  • HDFS的设计中,采用了中心化的元数据管理结点

HDFS主备同步实现

HDFS NameNode高可用架构

  • 组件介绍:ActiveNamenode
  • StandbyNamenode
  • ZooKeeper
  • BookKeeper
  • ZKFC
  • HA

理论基础-状态机复制和日志

  • 状态机复制是实现容错的常规方法
  • 组件:状态机及其副本、变更日志、共识协议

NameNode 操作日志的生产消费

  • 目录树和文件信息的更新

NameNode块状态维护

  • DataNode Heartbeat
  • DataNode Block Report
  • Active即接收,不发起变更
  • Standby只接收,不发起变更

HDFS自动主备切换

分布式协调组件-ZooKeeper

  • 一般用于提供选主、协调、元数据存储
  • HA核心机制:Watch

自动主备切换流程-Server侧

  • 轮询探活
  • 脑裂机会
  • Fence机制

自动切换流程-Client侧

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

日志系统BookKeeper简介

BookKeeper架构

BookKeeper存储日志

  • 低延时
  • 持久性
  • 强一致性
  • 读写高可用

Quorum机制

  • 多副本一致性读写
  • 场景:多副本对象存储,用版本号标识数据新旧

BookKeeper Quorum

  • Sloppy Quorum机制
  • 日志场景:顺序追加、只写

二、数据存储高可用

单机存储的数据高可用机制

回到单机存储-RAID

  • 特点:廉价、高性能、大容量、高可用

RAID方案讲解

  • RAID 0:条带化
  • RAID 1:冗余
  • RAID 3:容错校验

HDFS的数据高可用机制

HDFS多副本

  • 优点:读写路径简单、副本修复简单、高可用

Erasure Coding原理

  • 业界常用Reed Solomon算法

HDFS Eresure Coding

和多副本比较:

  • 读写速度
  • 成本
  • 修复速度
  • 读写路径的实现

考虑网络架构的数据高可用

网络架构

  • 机架:放服务器的架子
  • TOR:机架顶部的交换机
  • 数据中心:集中部署服务器的场所

副本放置策略-机架感知

  • trade-off一个本地、一个远端

元数据高扩展性

元数据拓展性挑战

元数据节点拓展性挑战

挑战:

  • 名字空间分裂
  • DataNode汇报
  • 目录树结构本身复杂

常见的Scale Out方案

image.png

社区的解决方案

数据存储高扩展性

超大集群的长尾问题

  • 延迟的分布和长尾延迟
  • 尾部延迟放大
  • 长尾问题的表现-慢节点

超大集群的可靠性问题

  • 超大集群下的数据可靠性
  • Copyset

超大集群的不均匀问题

  • 超大集群的负载均衡和数据迁移
  • 数据写入不均DN冷热不均

image.png

数据迁移工具速览

  • 跨NN迁移
  • Balancer