这是我参与「第四届青训营 」笔记创作活动的的第9天。本篇笔记对于7.31日熊睦老师讲授的 HDFS 高可用与高扩展性机制分析的内容做一个复习总结。
元数据高可用
- 服务高可用的需求:故障(软硬件/人为)无可避免,灾难(数据中心级别不可用:断电、空调停机、网络故障)时有发生,业务停止损失极大。
- 高可用的衡量:
- 服务可用性指标
- MTTR(mean time to repair):平均修复时间
- MTTF(mean time to failure):平均失效时间,系统平均能够正常运行多长时间,才发生一次故障。
- MTBF(mean time between failures):平均故障间隔
- 可用性年化 = MTBF/( MTBF + MTTR )要达到 99.9% 甚至 99.999%(全年五分钟)
- 服务可用性指标
- 高可用的形式:
- 服务高可用(热/冷备份)
- 故障恢复操作(人工/自动切换,高可用需要系统自动决策),HDFS 中 NameNode 作为中心化元数据管理节点,容易成为故障单点
- NameNode 高可用架构
- Active NameNode:主节点,处理 client请求,生产日志 edit log,存到 BooKeeper
- Standby NameNode:备节点,消费日志,保持一致性、
- ZooKeeper:为自动选主提供统一的协调服务
- ZKFC:NameNode 探活,触发主备切换
- HA Client:提供了自动切换的客户端
图源:字节跳动大数据青训营
- 状态机复制和日志
- 组件:状态机及其副本、变更日志、共识协议
- NameNode 操作日志的生产消费:目录树和文件信息的更新,不同系统可能逻辑和物理日志保存方式不同
- NameNode 块状态维护
- Active 接收心跳,发起变更;Standby 只接收,不变更
- Content State 状态:主备切换后需要避免 DataNode 的不确定状态(比如做删除状态操作),所有 DN 做完一次全量的块上报后解除,此时 NameNode 获得了全部信息。
- 分布式协调组件ZooKeeper: (待补充)