这是我参与「第四届青训营 」笔记创作活动的第5天
概述
这节课主要分为四个方面
- HDFS 元数据服务的高可用
- HDFS 数据存储高可用
- HDFS 元数据服务的高扩展性
- HDFS 数据存储的高扩展性
关于HDFS高可用和扩展性的一些名词
高可用
- 复制状态机 Replicated State Machine
- 操作日志 Op Log / Edit Log
- RTO 与 RPO
- 物理日志与逻辑日志
- 同步复制、半同步复制
- 心跳
- 脑裂
- fence
- 副本 replica
- 数据中心网络架构
- 机架 rack
- TOR 交换机
- 数据中心 data center
扩展性
- 分片 shard
- 分区 partition
- 邦联架构 federation
- 路由 route
- block pool
- 代理 proxy
- 负载均衡 load balance
- 数据分级 data classification
- 冷/热数据 hot/cold data
- 数据搬迁 migration
- 慢节点
- 长尾 long tail
元数据服务高可用
服务高可用需求
主要原因:故障不可避免,灾难时有发生
高可用的衡量:
服务可用性指标:
- MTTR
- MTTF
- MTBF
可用性的年华
公式:
高可用形式:
- 服务高可用
-
- 热备份
- 冷备份
- 故障恢复操作
-
- 人工切换
- 自动切换
为了实现真正意义上的高可用,我们需要让系统自动决策
HDFS在设计中,采用了中心化的元数据管理节点NameNode
NameNode容易成为故障的单点(single point of failure)
HDFS NameNode高可用架构
- 组件介绍
-
- ActiveNameNode:主节点,提供服务,生产日志
- StandbyNameNode:备节点,消费日志
- Zookeeper:为自动选主提供的统一协调服务
- BookKeeper:提供日志存储服务
- ZKFC:NameNode探活,触发主备切换
- HA Client:提供自动切换的客户端
- editLog:操作日志
- 围绕三个方面来看高可用
-
- 节点状态如何保存
- 操作日志如何同步
- 如何做到自动切换
状态机复制和日志
状态机复制是实现容错的常规方法
- 组件
-
- 状态机以及副本
- 变更日志
- 共识协议
NameNode状态持久化
NameNode操作日志的生产消费
active生产,standly消费(可能有多个)
Quorum机制
Quorum机制:多副本一致性读写
场景:多副本对象存储,用版本号标识数据
数据存储高可用
- 单机存储的数据高可用机制
- HDFS的数据高可用机制
- 考虑网络架构数据的高可用
副本放置策略:
一般为一个本地,一个远端
元数据高扩展性
HDFS namenode是一个集中式服务,部署在单个机器上,内存和磁盘的容量,cpu的计算力都不能无线扩展
\
常见的Scale Out 方案
- KV模型系统可以使用partition
-
- redis
- Kafka
- MySQL(分库分表)