这是我参与「第四届青训营 」笔记创作活动的第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方案
社区的解决方案
数据存储高扩展性
超大集群的长尾问题
- 延迟的分布和长尾延迟
- 尾部延迟放大
- 长尾问题的表现-慢节点
超大集群的可靠性问题
- 超大集群下的数据可靠性
- Copyset
超大集群的不均匀问题
- 超大集群的负载均衡和数据迁移
- 数据写入不均DN冷热不均
数据迁移工具速览
- 跨NN迁移
- Balancer