这是我参与「第四届青训营 」笔记创作活动的的第7天。
写在前面
这是一次总结性的课程笔记,从HDFS最显著的两个特点作为角度进行切入进行总结可以更高效地掌握这个工具的使用。
笔记正文
一、元数据高可用
1. 高可用的需求
- 高可用需求
- 故障
- 灾难
- 高可用衡量
- MTTR
- MTTF
- MTBF
- A =
- 99.9%: 全年8.76小时不可用
- 99.99%: 全年52.6分钟不可用
- 99.999%:全年5.26%分钟不可用
- 高可用的形式
- 服务高可用
- 故障恢复操作
- HDFS NameNode 高可用架构
1.1 元素
- 组件
- ActiveNameNode
- StandByNameNode
- ZooKeeper
- BookKeeper
- ZKFC
- HA Client
- edit log
- 三个关键问题
- 节点状态如何保存
- 操作日志如何保存
- 如何自动切换
1.2 理论基础
- 状态机复制和日志
- 实现容错的常规方法
- 组件
- 状态机及其副本
- 变更日志
- 共识协议
1.3 NameNode 状态持久化
- FSImage和EditLog
- CheckPoint机制
1.4 NameNode操作日志的生产消费
- 物理日志与逻辑日志
- 日志系统
- 高可用
- 高扩展性
- 高性能
- 强一致(有序)
1.5 NameNode块状态维护
DataNode Heartbeat DataNode Block Report
- Active与Standby区别
- Content Stale状态
2. HDFS主备同步实现与切换
自动主备切换流程
- Server侧
- ZKFailoverController
- 轮询探活
- 脑裂问题
- Fence机制
- Client侧
- 核心机制 StandbyException
- Client自动处理
3. 日志系统BookKeeper简介
- BookKeeper架构
- Quorum机制
二、数据存储高可用
RAID方案
- RAID0:条带化
- RAID1:冗余
- RAID2:容错校验 HDFS多副本 Erasure Coding
- HDFS版本的RAID2/3
- Reed Solomon算法 网络架构
- Rack服务器机架
- Top of Rack机架顶部的交换机
- Data Center集中部署服务器的场所 副本放置策略 机架感知
三、元数据高扩展性
挑战
- 名字次空间分裂
- DN汇报
- 目录树结构本身复杂 常见Scale Out 挑战
- KV模型系统使用partition
- Redis
- Kafka
- MySQL
- 三种数据路由方式
- 服务端测
- 路由层
- 客户端侧 案例
- NNProxy
- BlockPool
四、数据存储高扩展性
- 超大集群的长尾问题
- 延迟的分布与长尾延迟
- 慢节点
- 超大集群的可靠性问题
- CopySet
- 超大集群的不均匀问题
- 数据写入不均匀
- DN冷热不均
- 数据迁移工具速览
- DistCopy
- FastCopy
- Balancer