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

这是我参与「第四届青训营 」笔记创作活动的的第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汇报
  • 目录树结构本身复杂