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

140 阅读3分钟

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


本节课程目录:

  1. 元数据高可用
  2. 数据存储高可用
  3. 元数据高扩展性
  4. 数据存储高扩展性

1. 元数据高可用

  1. 可用性的衡量指标
    MTTR: 全称是Mean Time To Repair,即平均修复时间。是指可修复产品的平均修复时间,就是从出现故障到修复中间的这段时间。MTTR越短表示易恢复性越好。
    MTTF: 全称是Mean Time To Failure,即平均失效时间。系统平均能够正常运行多长时间,才发生一次故障。系统的可靠性越高,平均无故障时间越长。 可靠性是最初是确定一个系统在一个特定的运行时间内有效运行的概率的一个标准。可靠性的衡量需要系统在某段时间内保持正常的运行。
    MTBF: 全称是Mean Time Between Failure,即平均无故障工作时间。就是从新的产品在规定的工作环境条件下开始工作到出现第一个故障的时间的平均值。MTBF越长表示可靠性越高正确工作能力越强。
    image.png image.png

  2. HDFS高可用的架构 image.png ActiveNamenode:接收Client的请求,对请求进行一些处理并将处理的结果进行存储。 StandbyNamenode:ActiveNamenode的热备份(相比SecondaryNamenode非实时的特性是实时的),AN挂掉了由StandbyNamenode接替。
    NameNode操作日志的生产消费:
    image.png ActiveNamenode产生的日志和操作信息由StandbyNamenode去进行消费,两者对日志进行同步。
    NameNode块状态维护: image.png 高可用架构下,DataNode需要向NameNode和Standby同时发送心跳信息,让两者知道自己还活着。但是Standby虽然接收但是并不发起变更。
    分布式协调组件:Zookeeper
    image.png 自动主备切换-Server端
    image.png ZKFC:通过心跳监控NameNode的状态,如果Active进程挂掉,被Standby感知,Standby重新向Active发送消息确定Active挂掉(可以删除Active节点,避免脑裂问题的发生)
    自动主备切换-Client端
    image.png 设置一个active数组进行轮询确保找到一个Active提供服务。

  3. BookKeeper架构
    image.png Application对应nameNode去进行写操作
    如果保证写入的多个日志副本一致? (Quorum机制 - 对象存储(重复修改)) image.png (Quorum机制 - 日志存储(更加简单))
    image.png BookKeeper数据均衡放置策略:
    image.png


2. 数据存储高可用

  1. RAID方案讲解
    image.png RAID1:发生不一致问题难以判断
    RAID3:存储了校验码,不仅可以判断数据是否出错,而且在出错的情况下进行修复。

  2. HDFS多副本 image.png Frasure Coding(基础上添加了纠错码)
    image.png HDFS Frasure Coding:
    image.png 条带化优势:假如只需要读取很少的数据,但是数据损坏了,不需要读取一个块的纠错码去恢复数据

  3. 副本放置策略
    机架感知: image.png 网络层面进行考虑,比如尽量让数据副本分布在不同的交换机下,降低跨rack之间的流量


3. 元数据高扩展性

  1. 扩展的挑战
    image.png
  2. Scale out方案 image.png ①根据key选择不同的node获取数据
    ②提供一个路由层,由路由层转发到不同的node上
    ③在配置文件中进行设置,访问的时候直接进行转发
  3. 社区解决方案 - BlockPool
    image.png
  4. 小文件问题
    image.png

4. 存储数据高扩展性

  1. 延迟的分布和长尾延迟
    image.png
  2. 尾部延迟放大
    image.png
  3. 长尾问题的表现-慢节点
    image.png
  4. 超大集群的数据可靠性
    image.png

5. 总结:

image.png