HDFS 高可用和高扩展机制分析| 青训营笔记

67 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第7天

元数据高可用

服务可用性的指标

  • MTTR(Mean Time To Repair):平均修复时间,系统能多快恢复
  • MTTF(Mean Time To Failure):平均失效时间,运行到故障间的时间,一般用于不可修复的系统(制造业)
  • MTBF(Mean Time Between Failures):平均无故障时间,两次故障间的间隔,一般用于可修复的系统(软件)

可用性的年化:A = MTBF / (MTBF + MTTR)

备份方式

  • 冷备份:备份服务的数据,可以和数据归档相结合。在主服务故障时,利用备份的数据重启
  • 热备份:主服务和备服务同时运行,在主服务故障时,随时可以切换到备服务

故障恢复操作

  • 人工切换:在故障发生时,运维人员接收报警后,手动执行服务切主操作。一般较慢,难以满足全年不可用时间的目标
  • 自动切换:通过探活组件、分布式共识协议等手段,系统能自动发现主服务的故障,并切换到备份不符

HDFS NameNode 高可用架构

image.png

  • Active NameNode:主节点,提供服务,生产日志editlog。
  • Standby NameNode:备节点,消费 editlog
  • editlog:用户变更操作的记录,具有全局顺序,是 HDFS 的变更日志
  • ZooKeeper:为自动选主提供统一协调服务、元数据存储
  • BookKeeper:提供日志存储服务
  • ZKFC (ZooKeeper Failover Controller):NameNode探活、触发主备切换
  • HA Client:提供了自动切换的客户端

数据存储高可用

单机存储的数据高可用

RAID (Redundant Array of Independent Disks) 将多个廉价、不可靠、低性能、容量小的磁盘组装在一起,提供高可靠、高性能、大容量逻辑磁盘服务的一组磁盘列阵方案

  • RAID 0: 条带化。将数据分块后按条带化的形式分别存储在多个磁盘上,提供大容量、高性能
  • RAID 1: 冗余。将数据副本存储在多个磁盘上,提供高可靠
  • RAID 3: 容错校验。在数据分块存储的基础上,将数据的校验码存储在独立的磁盘上,提供高可靠、高性能

HDFS 多副本

HDFS版本的RAID 1:读写路径简单,副本修复简单,高可用

Erasure Coding:HDFS版本的RAID 2/3,业界常用Reed Solomon算法。成本比多副本更优,读写路径实现更加复杂


元数据高扩展性

元数据节点扩展性的挑战

HDFS NameNode 是一个集中式的服务,部署在单个机器上,本身不是分布式的,内存和磁盘容量、cpu的计算能力都不能无限扩展

scale up v.s. scale out

  • scale up: 扩容单个服务器的能力
  • scale out: 部署多个服务器来服务

挑战:

  • 名字空间分裂
  • DataNode 汇报
  • 目录树结构本身复杂

常见的scale-out方案:KV模型的系统可用使用partition(redis, Kafka, MySQL分库分表)

社区解决方案 - BlockPool


数据存储高扩展性