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

216 阅读2分钟

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

元数据服务高可用

提供服务的过程中,故障和灾难不可避免,如果HDFS系统不可用,业务停止的损失极大,所以HDFS系统的高可用性至关重要。

高可用的衡量指标

服务可用性指标:

  • MTTR恢复时长:故障发生到恢复正常的时间
  • MTTF修复前平均时间:预计的可运作平均时间
  • MTBF平均无故障工作时间:两次故障直接的时间

可用性=MTBF/(MTBF+MTTR)可用性=MTBF/(MTBF+MTTR)

高可用的形式

服务高可用:

  • 热备份
  • 冷备份

故障恢复操作:

  • 人工切换
  • 自动切换

高可用需要让系统自动决策,HDFS的设计采用了中心化的元数据管理节点NameNode,NameNode容易成为故障中的单点。

NameNode高可用架构

image.png

组件介绍:

  • ActiveNamenode:主节点,提供服务,生产日志
  • StandbyNamenode:备节点,消费日志
  • ZooKeeper:为自动选主提供统一协调服务
  • Bookkeeper:提供日志存储服务
  • ZKFC:NameNode探活、触发主备切换
  • HA Client:提供了自动切换的客户端
  • edit log:操作的日志

NameNode操作日志的生产消费

状态机复制是实现容错的常规方法。

image.png

Active生产,Standby消费。

日志系统:高可用,高扩展性,高性能,强一致。

NameNode块状态维护

image.png

Active既接收,也发起变更,Standby只接收,不发起变更。

数据存储高可用

HDFS多副本:类似单机存储RAID1,具备读写路径简单,副本修复简单,高可用的优点。

Erasure Coding:类似RAID2/3,业界常用Reed Solomon算法。

元数据高扩展性

BlockPool

解决DN同时服务多组NN的问题

文件服务分层:

  • Namespace
  • Block Storage

用blockpool来区分DN的服务

  • 数据块存储
  • 心跳和块上报

viewfs

Federation架构:将多个不同集群组合起来,对外表现为一个集群,通过在client-side的配置,指定不同的目录访问不同的NameNode,局限性是运维复杂。

NNProxy

字节自研HDFS代理层,提供了路由服务,主要实现了路由管理和RPC转发,以及鉴权、限流、查询缓存等额外能力。