大数据 | HDFS 如何实现故障自动转移

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 大数据 | HDFS 如何实现故障自动转移

为什么需要自动故障转移


       在 HDFS 2.x 集群的 HA 模式下通常会有两个 NameNode 用来进行记录元数据,其中一个是主节点(Active),另外一个是备节点(Standby)。主备之间的数据同步通过 JournalNode 节点来充当中介,从而完成了主备节点之间数据的最终一致性。


       当 NameNode 的主节点宕机后,通过命令可以切换到它的备节点成为主节点,使用命令进行切换需要人工的参与,虽然这样可以解决 HDFS 高可用的问题,但是这样的切换还是比较繁琐的。因此需要在 Active 节点发生故障的时候进行自动地切换到 Standby 节点,从而完成故障自动转移。


       为了实现故障的自动转移,HDFS 引入了 ZooKeeper 和 ZKFC。


故障自动转移


       HDFS 为了实现故障自动转移功能添加了两个组件,分别是 ZooKeeper 集群


和 ZKFailoverController 进程。其中,ZKFailoverController 简称为 ZKFC。


       ZooKeeper 在故障自动转移中的作用大体有两个,第一个是 NameNode 的选“主”,第二个是监听故障的发生。


       ZKFC 在故障自动转移中的作用大体也是两个,第一个是在 ZooKeeper 中用于争抢锁完成选“主”,第二个是当 Active 节点发生故障时,用于完成故障的自动切换。


HDFS HA 故障自动转移架构图


       来看一下 HDFS HA 故障自动转移架构图。在图中,非蓝色部分是 HDFS 的 HA 模式,蓝色部分则完成了故障自动转移的功能,即当 Active 节点发生故障时,会自动切换 Standby 节点为 Active 节点。


af190d6515768a8daabc0f23678d7081.png


       本图和上篇文章 《HDFS 在 HA 模式集群下 JournalNode 节点的作用》 的图稍微有所差别。首先,ZooKeeper 集群的节点是单数节点,上篇文章的图中 ZooKeeper 画了四台;第二,ZKFC 和 NameNode 在同一台主机中,因此把它们框在了一起。


NameNode 如何选主


       在了解 ZKFC 如何完成自动切换前,需要了解 NameNode 如何进行选主。NameNode 节点的选主是一件比较容易的事情,ZKFC 会在 ZooKeeper 下创建一个”临时节点“,哪个 ZKFC 先创建了该节点,那么创建了该节点的 ZKFC 对应的 NameNode 就是主节点(Active)。没有创建成功的 ZKFC 对应的 NameNode 即为备节点(Standby)。NameNode 选主是争抢制,无需选举,谁抢上就是谁的。


ZKFC 完成故障自动转移


       两个 ZKFC 通过争抢在 ZooKeeper 中创建锁,创建成功的即为”主“,那么没有创建的成功的 ZKFC 会创建一个监听事件。当”主“发生宕机或断网后,锁会被自动删除,此时 ZooKeeper 会通知备节点的 ZKFC。当备节点的 ZKFC 接收该通知时,就会开始做故障自动转移的工作。


       一般主发生故障会有几种情况。首先,主 NameNode 服务挂了,这时它对应的 ZKFC 会主动删除 ZooKeeper 中的锁;第二种情况是,主 NameNode 对应的 ZKFC 挂了(但是 NameNode 健在),那么它在 ZooKeeper 中创建的临时节点也会被删除;还有第三种情况是,主 NameNode 所在的主机断网了。


       上面说了产生故障的可能性,那么来说下一故障转移的大体流程。首先来说,主 NameNode 服务挂掉后的故障转移,大致流程如下:


       首先,主节点对应的 ZKFC 发现主 NameNode 服务挂掉了,那么它会主动去 ZooKeeper 中删除锁。然后,备节点对应的 ZKFC 收到通知后会去创建锁;接着,备节点的 ZKFC 会去看一下主节点的 NameNode,此时发现主节点的 NameNode 已经不活着了;最后,备节点的 ZKFC 会把备节点的 NameNode 提升为主节点。


       第二种情况是,主节点的 NameNode 服务还存在,但是它对应的 ZFKC 进程挂掉了。当 ZKFC 进程挂掉后,它在 ZooKeeper 中创建的临时节点会自动删除。然后,备节点对应的 ZKFC 收到通知还是去会争抢锁;接着,它会去看看主节点的 NameNode,发现主节点的 NameNode 还在,此时它会让主节点的 NameNode 降级成为从节点;最后,会把原来的备节点的 NameNode 提升为主节点。


总结


       通过三篇文章,整列了关于 HDFS 的几个技术点,分别是 HDFS 元数据的持久化,HDFS 主备节点之间如何完成数据一致性,还有本篇文章整理的 ZKFC 完成故障自动转移。三篇文章均没有涉及任何配置、命令和原理。只是讲其中的思想、流程等进行了介绍。


       通过几篇文章,联系自己已有的一些技术知识会发现,很多技术都是相通的。比如 HDFS 元数据的持久化是通过 FsImage 和 EditsLog 来完成的,而 FsImage 和 EditsLog 的原理和 Redis 的 RDB 和 AOF 又非常相似。而 JournalNode 完成数据的最终一致性,其实对于其他技术中主备完成数据一致性来说也是相似的。


       很多 API 的使用,基本可能是学一个会一个,而原理则可能是一通百通。把知识的相关性不断的联系起来,可能解决问题,学习新知识就会越来越快了。


相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
5月前
|
分布式计算 Java 大数据
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
242 0
|
5月前
|
存储 分布式计算 Hadoop
【大数据技术Hadoop+Spark】HDFS概念、架构、原理、优缺点讲解(超详细必看)
【大数据技术Hadoop+Spark】HDFS概念、架构、原理、优缺点讲解(超详细必看)
131 0
|
4月前
|
存储 Java API
HDFS如何处理故障和节点失效?请解释故障恢复机制。
HDFS如何处理故障和节点失效?请解释故障恢复机制。
51 0
|
5月前
|
SQL 分布式计算 Hadoop
[AIGC ~大数据] 深入理解Hadoop、HDFS、Hive和Spark:Java大师的大数据研究之旅
[AIGC ~大数据] 深入理解Hadoop、HDFS、Hive和Spark:Java大师的大数据研究之旅
|
5月前
|
分布式计算 Hadoop 大数据
大数据成长之路-- hadoop集群的部署(3)HDFS新增节点
大数据成长之路-- hadoop集群的部署(3)HDFS新增节点
74 0
|
5月前
|
存储 大数据 Java
【云计算与大数据技术】文件存储格式行式、列式、GFS、HDFS的讲解(图文解释 超详细)
【云计算与大数据技术】文件存储格式行式、列式、GFS、HDFS的讲解(图文解释 超详细)
92 0
|
1天前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之在DataWorks中,MaxCompute创建外部表,MaxCompute和DataWorks的数据一直保持一致如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
8 0
DataWorks产品使用合集之在DataWorks中,MaxCompute创建外部表,MaxCompute和DataWorks的数据一直保持一致如何解决
|
1天前
|
分布式计算 DataWorks 安全
DataWorks产品使用合集之在DataWorks中,从Elasticsearch同步数据到ODPS时同步_id字段的如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
14 0
|
1天前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之dataworks 同步es数据到maxcompute 遇到报错:获取表列信息失败如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
8 0
|
1天前
|
分布式计算 大数据 BI
MaxCompute产品使用合集之MaxCompute项目的数据是否可以被接入到阿里云的Quick BI中
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。

热门文章

最新文章