HDFS高可用和高扩展 | 青训营笔记

177 阅读2分钟

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

本节主要介绍HDFS元数据服务、数据存储的高可用和高扩展。

一、元数据高可用

HDFS系统若在故障和灾难面前不可用,将导致极大的损失。

衡量服务可用性的指标:MTTR、MTTF、MTBF

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

全年不可用时间:A=MTBF/(MTBF+MTTR)

高可用形式:

  • 服务高可用-热备份、冷备份
  • 故障恢复操作:人工切换、自动切换

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

HDFS高可用架构包括Active NameNode、Stanby NameNode、editlog、ZooKeeper、BookKeeper、ZKFC、HA Clent等。

二、数据存储高可用

单机存储使用RAID,主要具有廉价、高性能、大容量、高可用等特点。RAID0提供大容量、高性能,RAID1提供高可靠。

HDFS多副本放置,将数据块存储在多个 DN 上,读取路径简单,副本修复简单,高可用。

Erasure Coding 方案:将数据分段,通过特殊的编码方式存储额外的校验块,并条带化的组成块,存储在 DN 上。与多副本比较,成本低,读写速度、修复速度快。

数据中心架构分为机架、TOR(Top of Rack)、数据中心等。

字节跳动的HDFS集群采用多机房解决容量和容灾问题。

三、元数据高扩展

HDFS NameNod是个集中式服务,部署在单个机器上,内存和磁盘的容量、CPU计算力都不能无限扩展。

扩展性方案有scale up和scale out,分别通过单机提升和组成集群提高扩展性。

partition 方法分为水平分区和垂直分区,常用于KV模型。

federation 架构使得多个集群像一个集群一样提供服务的架构方法,提供了统一的服务视图,提高了服务的扩展性。

blockpool将文件系统分为文件层和块存储层,解决了多个 NN 可能生成同一个 block id,DN 无法区分的问题。

四、数据存储高扩展

长尾:

占绝大多数的,重要性低的东西就被称为长尾。

百分位延迟将所有请求的响应速度从快到慢排序,取其中某百分位的请求的延迟时间。

尾部延迟放大:一个请求或任务需要访问多个数据节点,只要其中有一个慢,则整个请求或任务的响应就会变慢。