这是我参与「第四届青训营 」笔记创作活动的的第9天
元数据服务高可用
1.1高可用的需求
故障类型:
- 硬件故障
- 软件故障
- 人为故障
故障不可避免,灾难时有发生。 而如果HDFS系统不可用。
- 无法核算广告账单,直接引发收入损失
- 无法生产数据报表,数据驱动无从谈起
- 无法进行模型训练,用户体验越来越差
灾难:数据中心级别不可用
- 机房断电
- 机房空调停机
- 机房间网络故障、拥塞
1.2 HDFS主备同步实现
HDFS NameNode高可用架构
组件介绍
- ActiveNamenode:主节点,提供服务,生产日志
- StandbyNamenode:备节点,消费日志
- ZooKeeper:为自动选主提供统一协调服务
- BookKeeper:提供日志存储服务
- ZKFC: NameNode 探活、触发主备切换
- HA Client: 提供了自动切换的客户端
- edit log:操作的日志
围绕三个问题来看高可用
- 节点状态如何保存
- 操作日志如何同步
- 如何做到自动切换
1.3 HDFS自动主备切换
分布式协调组件- ZooKeeper
一般用于提供选主、协调、元数据存储。
使用它的组件:
- HDFS、Y ARN、HBase
- Kafka、ClickHouse
- 等等
HA核心机制: Watch
自动主备切换流程- Server侧
ZKFailoverController作为外部组件,驱动HDFS NameNode的主备切换
- 轮询探活
- 脑裂问题
- Fence机制
1.4日志系统BookKeeper简介
BookKeeper存储日志
- 低延时
- 持久性
- 强一致性
- 读写高可用
对比:日志系统和文件系统的复杂度
数据存储高可用
2.1单机存储的数据高可用机制
回到单机存储- RAID
特点
- 廉价
- 高性能
- 大容量
- 高可用
2.2 HDFS的数据高可用机制
HDFS多副本 优点
- 读写路径简单
- 副本修复简单
- 高可用
元数据高扩展性
元数据节点扩展性的挑战
HDFS NameNode是个集中式服务,部署在单个机器上,内存和磁盘的容量、CPU 的计算力都不能无限扩展。 scale up Vs. scale out
- 扩容单个服务器的能力
- 部署多个服务器来服务
挑战
- 名字空间分裂
- DataNode汇报
- 目录树结构本身复杂