HDFS高可用与高扩展机制

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: HDFS高可用与高扩展机制

元数据的高可用

元数据包含两块,一个是静态的,一个是动态的

🚩静态的是fsimage和edits,其实fsimage是由edits文件合并生成的,所以只需要保证edits文件内容的一 致性。这个就是需要保证多个NameNode中edits文件内容的事务性同步。这块的工作是由JournalNodes 集群进行同步的。

🚩动态数据是指block和DataNode节点的信息,这个如何保证呢? 当DataNode启动的时候,上报数据信息的时候需要向每个NameNode都上报一份。 这样就可以保证多个NameNode的元数据信息都一样了,当一个NameNode down掉以后,立刻从 Standby NN中选择一个进行接管,没有影响,因为每个NameNode 的元数据时刻都是同步的。


💨高可用的需求

✔故障类型:

  • 硬件故障
  • 软件故障
  • 人为故障

✔灾难:数据中心级别不可用

  • 机房断电
  • 机房空调停机
  • 机房间网络故障、拥塞

故障不可避免,灾难时有发生。

🎈而如果HDFS系统不可用。则引发

  • 无法核算广告账单,直接引发收入损失
  • 无法生产数据报表,数据驱动无从谈起
  • 无法进行模型训练,用户体验越来越差

业务停止的损失极大,所以HDFS系统的高可用性就至关重要。


🎈高可用的衡量

服务可用性指标

  • MTTR
  • MTTF
  • MTBF

🎈可用性的年化

可用性:

图片.png


🎈高可用的形式

服务高可用

热备份

冷备份

故障恢复操作

人工切换

自动切换

人工的反应、决策时间都更长,高可用需要让系统自动决策。

HDFS的设计中,采用了中心化的元数据管理节点NameNode。

NameNode容易成为故障中的单点(single point of failure).


🎈HDFS NameNode高可用架构

组件介绍:

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

围绕三个问题来看高可用:

  • 节点状态如何保存
  • 操作日志如何同步
  • 如何做到自动切换

🎈NameNode状态持久化

👇FSImage和EditLog

图片.png

👇Checkpoint机制

图片.png


🎈NameNode操作日志的生产消费

Active生产,Standby (可能有多个)消费

图片.png


💨自动主备切换流程

Server侧

图片.png

ZKF ailoverController作为外部组件,驱动HDFS NameNode的主备切换

Client侧

图片.png

核心机制: StandbyException


💨BookKeeper架构

BookKeeper存储日志

  • 低延时
  • 持久性
  • 强一致性
  • 读写高可用

对比:日志系统和文件系统的复杂度

🎈Quorum机制

Quorum机制:多副本-致性读写

场景:多副本对象存储,用版本号标识数据新旧

🎈BookKeeper Quorum

日志场景:顺序追加、只写

Write Quorum:写入副本数

Ack Quorum:响应副本数


数据存储高可用

💨单机存储的数据高可用机制

🎈回到单机存储- RAID

特点

  • 廉价
  • 高性能
  • 大容量
  • 高可用

💨HDFS的数据高可用机制

🎈HDFS多副本
优点

  • 读写路径简单
  • 副本修复简单
  • 高可用

🎈Erasure Coding原理
图片.png

🎈HDFS Erasure Coding

图片.png

和多副本比较

  • 读写速度
  • 成本
  • 修复速度
  • 读写路径的实现

💨考虑网络架构的数据高可用

🎈网络架构

  • 机架(Rack):放服务器的架子。
  • TOR(Top of Rack):机架顶部的交换机。
  • 数据中心(Data Center):集中部署服务器的场所

🎈副本放置策略-机架感知
图片.png


💨自我思考

HDFS的数据高可用,是在一个集群中存在多个NameNode,分别运行在独立的物理节点上。在任何时间点,只有一个NameNode是处于Active状态,其它的是处于Standby状态。


元数据高扩展性

💨元数据扩展性挑战

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

挑战

  • 名字空间分裂
  • DataNode汇报
  • 目录树结构本身复杂

🎈常见的Scale Out方案

KV模型的系统可以使用partition

  • Redis
  • Kafka
  • MySQL (分库分表)

💨社区的解决方案

🎈BlockPool

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

🎈viewfs

Federation架构:将多个不同集群组合起来,对外表现像一个集群一样。


存储数据高扩展性

💨延迟的分布和长尾延迟

🎈延迟的分布:

  • 用百分数来表示访问的延迟的统计特征
  • 例如p95延迟为1ms,代表95%的请求延迟要低于1ms,但后5%的请求延迟会大于1ms

🎈长尾延迟:

尾部(p99/p999/p999) 的延迟,衡量系统最差的
请求的情况。会显著的要差于平均值


💨自我思考

高扩展性可以解决单一命名空间存在的问题,使用多个NameNode,每个NameNode负责一个命令空间


💨数据迁移工具

🎈跨NN迁移

DistCopy

  • 基于MapReduce,通过一个个任务,将数据从-个NameNode拷贝到另一个NameNode。
  • 需要拷贝数据,流量较大,速度较慢。

FastCopy

  • 开源社区的无需拷贝数据的快速元数据迁移方案
  • 前提条件:新旧集群的DN列表吻合
  • 对于元数据,直接复制目录树的结构和块信息。
  • 对于数据块,直接要求DataNode从源BlockPool hardlink到目标BlookPool,没有数据拷贝。
  • hardlink: 直接让两个路径指向同一块数据。

🎈Balancer

工具向DataNode发起迁移命令,平衡各个DataNode的容量。

场景

  • 单机房使用、多机房使用
  • 限流措施
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
存储 机器学习/深度学习 分布式计算
HDFS教程(03)- HDFS高可用与容错
HDFS教程(03)- HDFS高可用与容错
369 0
|
机器学习/深度学习 存储 分布式计算
HDFS Namenode HA高可用搭建
HDFS Namenode HA高可用搭建
264 1
|
机器学习/深度学习 存储 分布式计算
HDFS 高可用和高扩展机制分析|青训营笔记
文章主要讲解:1.HDFS 元数据服务的高可用;2.HDFS 数据存储高可用;3.HDFS 元数据服务的高扩展性;4.HDFS 数据存储的高扩展性
276 0
HDFS 高可用和高扩展机制分析|青训营笔记
|
分布式计算 安全 Hadoop
|
3月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
207 6
|
3月前
|
SQL 分布式计算 监控
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
76 3
|
3月前
|
SQL 分布式计算 Hadoop
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
62 4
|
3月前
|
存储 分布式计算 资源调度
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
100 5
|
3月前
|
资源调度 数据可视化 大数据
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
43 4

热门文章

最新文章