这是我参与「第四届青训营 」笔记创作活动的的第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 无法区分的问题。
四、数据存储高扩展
长尾:
占绝大多数的,重要性低的东西就被称为长尾。
百分位延迟将所有请求的响应速度从快到慢排序,取其中某百分位的请求的延迟时间。
尾部延迟放大:一个请求或任务需要访问多个数据节点,只要其中有一个慢,则整个请求或任务的响应就会变慢。