这是我参与【第四届青训营】笔记创作活动的第三天。
回顾:
在前面几章学习中,了解了HDFS的架构和读写流程。
HDFS通过将文件分块来存储大文件,HDFS的组件有NameNode和DataNode,分别负责提供元数据和数据服务。
在读/写数据时,HDFS客户端需要先从NameNode上获取数据读取/写入的DataNode地址,然后和DataNode交互来完成数据读/写。
一个“可以用”的系统和“好用”的系统,差距就是“高可用”和“高扩展性”
课程目录
1.元数据高可用
——主备系统:基于日志、自动切换、实时热备
1.1高可用的需求
1.1.1 服务高可用的需求
故障类型:
1)硬件故障
2)软件故障
3)人为故障
灾难:数据中心级别不可用
1)机房断电
2)机房空调停机
3)机房间网络故障、拥塞
故障不可避免,灾难是有发生。
而如果HDFS 系统不可用。
1)无法核算广告账单,直接引发收入损失
2)无法生产数据报表,数据驱动无从谈起
3)无法进行模型训练,用户体验越来越差
业务停止的损失极大,所以HDFS系统的高可用性就至关重要。
1.1.2 高可用的衡量
服务可用性指标
1)MTTR
2)MTTF
3)MTBF
1.1.3 可用性的年化
可用性:
全年不可用时间
1)可用性 99.9%,全年8.76小时不可用
2)可用性 99.99%,全年52.6分钟不可用
3)可用性 99.999%,全年5.26分钟不可用
1.1.4 高可用的形式
服务高可用
1)热备份
2)冷备份
故障恢复操作
1)人工切换
2)自动切换
人工的反应、决策时间都更长,高可用需要让系统自动决策。
HDFS 的设计中,采用了中心化的元数据管理节点NameNode。
NameNode容易成为故障中的单点。
1.2 HDFS 主备同步实现
1.2.1 HDFS NameNode 高可用架构
组件介绍
1)ActiveNamenode: 主节点,提供服务,生产日志
2)StandbyNamenode:备节点,消费日志
3)ZooKeeper:为自动选主提供统一协调服务
4)BookKeeper:提供日志存储服务
5)ZKFC:NameNode 探活、触发主备切换
6)HA Client: 提供了自动切换的客户端
7)edit log:操作的日志
围绕三个问题来看高可用
1)节点状态如何保存
2)操作日志如何同步
3)如何做到自动切换
1.2.2 理论基础-状态复制和日志
状态机复制是实现容错的常规方法
组件
1)状态机以及其副本
2)变更日志
3)共识协议
1.2.3 NameNode 状态持久化
FSImage 和Editlog
Checkpoint 机制
1.2.4 NameNode 操作日志的生产消费
Active生产,Standby(可能有多个)消费
物理日志与逻辑日志
日志系统
1)高可用‘
2)高扩展性
3)高性能
4)强一致(有序)
1.2.5 NameNode 块状态维护
回顾:
1)DataNode Heartbeat
- DataNode Block Report
区别:
1) Active 即接受,也发起变更
2) Standby 只接收,不发起变更
Content Stale状态
1)主备切换后,避免DN的不确定状态
1.3 HDFS自动主备切换
1.3.1 分布式协调组件-ZooKeeper
一般用于提供选主、协调、元数据存储
使用它的组件:
1)HDFS、YARN、HBase
2)Kafka、ClickHouse
3)等等
HA 核心机制:Watch
1.3.2 自动主备切换流程-Server 侧
ZKFailoverController
作为外部组件,驱动HDFS NameNode的主备切换
轮询探活
脑裂问题
Fence机制
1.3.3 自动主备切换流程-Client侧
核心机制:StandbyException
Client 自动处理
1.4 日志系统BookKeeper 简介
1.4.1BookKeeper 架构
BookKeeper 存储日志
1)低延时
2)持久性
3)强一致性
4)读写高可用性
对比:日志系统和文件系统的复杂度
1.4.2 Quorum 机制
Quorum 机制:多副本一致性读写
场景:
多副本对象存储,用版本号标识数据新旧
规则
思考:日志场景比对象保存更简单
1.4.3 BookKeeper Quorum
Sloppy Quorum 机制
日志场景:顺序追加、只写
Write Quorum:写入副本数
Ack Quorum:响应副本数
思考:Client挂掉导致不确认写入了多少数据,如何恢复?
1.4.4 BookKeeper Ensemble
Ensemble 机制
Round-Robin Load Balancer
1)第一轮:1,2,3
2)第二轮:2,3,4
3)第三轮:3,4,1
4)第四轮:4,1,2
优势:数据均衡