Hadoop HDFS NameNode HA自动故障转移原理

大数据技术之Hadoop(HDFS)第8章 HDFS HA高可用 8.1 HA概述 1)所谓HA(high available),即高可用(7*24小时不中断服务)。 2)实现高可用最关键的策略是消除单点故障。HA严格来说应该分成各个组件的HA机制:HDFS的HA和YARN的HA。 3)Hadoop2.0之前,在HDFS集群中NameNode存在单点故障(SPOF)。 4)NameNode主要在以下两个方面影响HDFS集群 NameNode机器发生意外... 阅读详情

Hadoop HDFS NameNode 高可用性 (HA) 中的自动故障转移 (Automatic Failover) 核心依赖于 ZooKeeper (ZK) 和 ZKFailoverController (ZKFC) 进程的协同工作。其底层实现原理可以分解为以下几个关键部分:

  1. 核心组件及其角色:

    • ZooKeeper (ZK): 扮演协调服务和真理之源的角色。它负责:
      • 选举领导者: 通过其 Zab 协议在多个参与者中选出一个领导者。
      • 维护状态信息: 存储关键的 HA 状态信息(如哪个 NN 当前是 Active)。
      • 提供通知机制: 当存储的状态发生变化时,通知注册的客户端(如 ZKFC)。
      • 会话管理: 跟踪客户端会话。如果客户端会话过期(通常意味着客户端崩溃或网络隔离),ZK 会删除该会话关联的所有临时节点。
    • ZKFailoverController (ZKFC): 这是一个独立的轻量级进程,运行在每个 NameNode 主机上。它是实现自动故障转移的核心“大脑”,扮演两个关键角色:
      • NameNode 健康监控器: 定期(通过 health-check 脚本或直接 RPC)检查其本地 NameNode 的健康状态(是否响应、是否处于健康状态)。
      • ZooKeeper 客户端: 与 ZooKeeper 集群交互,执行选举并响应 ZK 事件。
    • NameNode (NN): Active NN 处理所有客户端请求和 DataNode 心跳。Standby NN 保持状态同步(通过 QJM 或 NFS)并准备接管。
    • JournalNodes (QJM): 在基于 Quorum Journal Manager 的 HA 设置中,JNs 存储 EditLog,Active NN 写入,Standby NN 读取以保持同步。故障转移后,新的 Active NN 需要确保它能获取 JNs 的独占写入权(通常通过 epoch number 实现)。
    • DataNode (DN): 同时向 Active 和 Standby NN 发送心跳和块报告。
  2. 自动故障转移的关键流程:

    • 初始 Active 选举:
      1. 集群启动时,两个(或多个配置了 HA 的)NN 启动,各自的 ZKFC 也启动。
      2. 每个 ZKFC 尝试在 ZooKeeper 的一个特定临时有序节点下创建子节点(例如 /hadoop-ha/<nameservice>/ActiveStandbyElectorLock)。
      3. ZooKeeper 保证只有一个客户端能成功创建最小的序号节点。创建成功的 ZKFC 对应的 NameNode 成为 Active。
      4. 其他 ZKFC 在该节点上设置 Watch 以监听其变化。
    • 健康监控与状态报告:
      1. 每个 ZKFC 持续地监控其本地 NameNode 的健康状态。
      2. 持有 Active 锁的 ZKFC 会定期向 ZK 写入一个 sessionid + 时间戳到另一个状态节点(如 /hadoop-ha/<nameservice>/ActiveBreadCrumb),这相当于一个“心跳”,表明 Active NN 是健康的且其 ZKFC 会话有效。
      3. 如果本地 NN 健康检查失败(无响应、状态不健康),ZKFC 会标记该 NN 为不健康。
    • 故障检测:
      • 本地 NN 故障: 如果 ZKFC 检测到其本地 NN 不健康(例如,进程崩溃、僵死、健康检查失败),它会决定需要触发故障转移。
      • ZKFC 故障或网络隔离:
        1. 每个 ZKFC 与 ZK 维持一个会话。
        2. 如果 ZKFC 进程崩溃或其主机网络与 ZK 集群隔离,ZK 服务器检测到该 ZKFC 的会话过期。
        3. ZK 自动删除该会话拥有的所有临时节点,包括最重要的 Active 锁节点。
        4. 删除 Active 锁节点的事件会被其他正在 Watch 该节点的 ZKFC 捕获。
    • 触发故障转移:
      • 场景一 (由不健康 NN 的 ZKFC 主动触发): 当 ZKFC 检测到其本地 Active NN 不健康时:
        1. 它首先尝试优雅地将本地 NN 转为 Standby(如果可能)。
        2. 然后,它主动释放在 ZooKeeper 中的 Active 锁(删除其创建的临时节点)。
        3. 锁的删除事件被其他 ZKFC(主要是 Standby NN 的 ZKFC)捕获。
      • 场景二 (由 ZK 会话过期被动触发): 当 ZK 因会话过期删除 Active 锁节点时,所有 Watch 该节点的 ZKFC(特别是 Standby NN 的 ZKFC)会收到通知。
    • 新 Active 选举:
      1. 一旦 Active 锁节点被删除(无论是主动释放还是会话过期),所有 ZKFC(包括原 Active 的 ZKFC,如果它还在运行的话)都会尝试重新创建该临时有序节点。
      2. ZooKeeper 再次选举:创建最小序号节点成功的 ZKFC 赢得选举。
    • 故障转移执行:
      1. 赢得选举的 ZKFC(通常是原 Standby NN 的 ZKFC):
        • 执行必要的防护 (Fencing) 操作(极其关键,见下一点)。
        • 向其本地 NameNode 发送 RPC 命令,将其转换为 Active 状态。
        • 更新 ZooKeeper 中的状态信息(如 ActiveBreadCrumb),声明其 NN 现在是 Active。
      2. 新的 Active NameNode:
        • 从 JournalNodes 获取最新的 EditLog(确保 epoch 更高)。
        • 开始处理客户端请求和 DataNode 心跳。
    • 原 Active NN 恢复处理:
      • 如果原 Active NN 只是暂时性故障恢复,其 ZKFC 会检测到它已恢复健康。
      • 该 ZKFC 会尝试参与选举,但此时 ZooKeeper 中已有新的 Active 锁持有者。
      • 该 ZKFC 会将其本地 NN 转换为 Standby 状态,并开始从 JNs 同步状态。
  3. 关键机制:防护 (Fencing)

    • 目的: 防止“脑裂 (Split-Brain)”。即防止在故障转移过程中或之后,出现两个 NN 都认为自己是 Active 并同时写入 EditLog,导致数据损坏。
    • 时机: 在赢得选举的 ZKFC 将其本地 NN 提升为 Active 之前,必须确保旧的 Active NN 已经完全停止服务或无法再写入。
    • 常用方法: 由新的 Active ZKFC 执行。
      • SSH Fencing: 尝试通过 SSH 登录到旧 Active NN 主机并杀死 NN 进程(需要配置免密 SSH)。
      • Shell Script Fencing: 执行一个自定义脚本,该脚本通过特定方式(如调用管理接口、断电等)停止旧 Active NN。
      • QJM Fencing: 最重要且可靠的内置防护。新的 Active NN 在向 JournalNodes 写入之前,会请求一个更高的 Epoch Number。JNs 会拒绝任何使用旧 epoch 的写请求。这样,即使旧的 Active NN 还在运行并尝试写日志,也会被 JNs 拒绝,从而无法造成破坏。这是最推荐的方式,因为它直接作用于共享存储层。
    • 强制的步骤: 防护操作必须成功,新的 ZKFC 才会将其 NN 提升为 Active。如果配置的所有防护方法都失败,故障转移不会完成,以避免数据损坏风险。
  4. 总结流程 (简版):

    1. ZKFC 持续监控本地 NN 健康。
    2. 本地 Active NN 故障或其 ZKFC 与 ZK 失联。
    3. Active 锁在 ZK 中丢失(主动删除或会话过期)。
    4. 剩余健康的 ZKFCs 检测到锁丢失,触发选举。
    5. 赢得选举的 ZKFC 执行防护操作杀死或隔离旧 Active NN。
    6. 防护成功后,该 ZKFC 命令其本地 Standby NN 转为 Active。
    7. 新的 Active NN 使用更高的 Epoch 从 JNs 读取最新日志并开始服务。

注意事项:

  • 配置: 正确配置 hdfs-site.xml 中的 HA 相关参数(特别是 dfs.ha.automatic-failover.enabled=true, dfs.ha.fencing.methods, ZK 地址等)至关重要。
  • ZK 稳定性: ZooKeeper 集群本身的稳定性和性能对自动故障转移的可靠性影响极大。
  • 防护是核心: 没有可靠防护的自动故障转移比没有故障转移更危险,因为它可能导致数据损坏。
  • 监控: 需要监控 ZKFC 进程、ZK 会话状态、NN 健康状态以及防护操作日志。

NameNode HA 的自动故障转移通过 ZK 提供的分布式协调能力和 ZKFC 的本地监控与决策逻辑,结合强制的防护机制,实现了在主 NameNode 失效时快速、安全地将备用 NameNode 提升为主节点,从而保障 HDFS 服务的高可用性。

大数据技术之_07_Hadoop学习_HDFS_HA(高可用)_HA概述+HDFS-HA工作机制+HDFS-HA集群配置+YARN-HA配置+HDFS Federation(联邦) 架构设计 阅读详情

相关推荐

Hadoop环境搭建之HA模式

一、Hadoop HA 概述 1、HA(High Available),即高可用(不能中断服务)。 2、实现高可用最关键的策略是消除单点故障。HA 严格来说应该分成各个组件的 HA 机制:HDFS 的HA 和 YARN 的 HA。 3、Hadoop2.0 之前,在 HDFS 集群中 NameNode 存在单点故障(SPOF)。 4、NameNode 主要在以下两个方面影响HDFS集群 (1) Na...

a1786742005的博客 1188

HA的⾃动容灾原理

一、组件 如果想进⾏HA的⾃动故障转移,那么需要为HDFS部署两个新组件 ZooKeeper quorum ZKFailoverController进程(缩写为ZKFC)。 1.1 Zookeeper quorum Apache ZooKeeper是⼀项⾼可⽤性服务,⽤于维护少量的协调数据,将数据中的更 改通知客户端并监视客户端的故障。HDFS⾃动故障转移的实现依赖ZooKeeper进⾏ 以下操作: 1 )故障检测 ...

CyAurora的博客 520

hadoop之HDFS HA(高可用)架构安装部署

前言 再看本文章之前,请先确保已经看过CentOS下hadoop的分布式搭建和分布式协作服务框架Zookeeper安装部署两篇文章,因为本文章是建立在它们基础之上的。 一、HA相关介绍 1、为什么出现HA架构 Hadoop2.0之前,在HDFS集群中NameNode存在单点故障(SPOF)(也就是namenode单点宕机导致集群不可用的问题)。 NameNode主要在以下两个方面影响HDFS集群: NameNode机器发生意外,如宕机,集群将无法使用,直到管理员重启 NameNode机器需要升级,包括软件

sinat_40875078的博客 629

hadoop HA高可用集群搭建,ZooKeeper自动容灾

背景因为hadoop集群只有一个namenode,如果机器或者进程不可用之后,整个集群就瘫痪了,namenode节点存在单点故障的问题。HA架构    通常一个典型的HA集群有两个namenode,在任一时刻只有一个namenode是active状态,另外一个namenode处于standby待命状态。active激活态的namenode负责客户端的操作,standby待命态扮演slave从节点的...

fantasticqiang的博客 2658

算法面试八股文『 基础知识篇 』

个人整理的算法面试基础知识八股文,内容较详细。

SG_teresa's blog 4339

新装Win10/Win11后VMware虚拟机连不上网?手把手教你排查‘网络信息不可用’(从服务检查到网段配置)

本文详细介绍了在Windows 10/11系统上安装VMware Workstation后虚拟机无法联网的排查方法。从检查VMware NAT Service、DHCP Service等关键服务状态,到重置虚拟网络编辑器配置,再到内核设备驱动问题解决,手把手教你解决‘网络信息不可用’问题。特别针对VMCI驱动故障提供了实用解决方案,帮助用户快速恢复虚拟机网络连接。

weixin_28736335的博客 772

ZooKeeper在Hadoop中的协同应用:从NameNode选主到分布式锁实现

Hadoop与ZooKeeper在大数据生态系统中的核心位置和交互关系在大数据技术蓬勃发展的浪潮中,ZooKeeper作为分布式系统的"神经中枢",通过其精妙的协同机制为Hadoop生态注入了强大的生命力。通过前文对NameNode选主、分布式锁等核心场景的剖析,我们可以清晰地看到,ZooKeeper不仅是技术实现的工具,更是重塑数据管理范式的重要推手。

zuiyuelong的博客 1157

STM32F4三重ADC+DMA双缓冲实战:用CubeMX搞定同步采样,告别数据覆盖烦恼

本文详细介绍了STM32F4三重ADC与DMA双缓冲技术的实战应用,通过CubeMX配置实现同步采样,解决数据覆盖问题。内容涵盖硬件架构解析、CubeMX工程配置、双缓冲实现技巧及调试优化方法,适用于电机控制、电力监测等需要高精度多通道信号采集的场景。

weixin_30627341的博客 358

NameNode的HA特性和基于ZKFC的自动故障转移机制

HDFS(Hadoop Distributed File System)是一种分布式文件系统,提供对应用程序数据的高吞吐量访问,适合具有大型数据集的应用程序。HDFS 是 Apache Hadoop Core 项目的一部分,更多相关内容见http://hadoop.apache.org/。如下图所示,HDFS 一般作为大数据系统的存储底座。大数据系统架构图[1]

szw的博客 1277

Spark Graphx 项目实战(航班飞行网图分析)

航班飞行网图分析一.需要的技能点二.任务描述三.数据探索1.下载数据2.数据格式四.航班飞行网图问题分析1.构建航班飞行网图2.统计航班飞行网图中机场与航线的数量3.计算最长的飞行航线4.找出最繁忙的机场5.找出最重要的飞行航线6.找出最便宜的飞行航线五.代码实现 一.需要的技能点 Spark GraphX API Spark GraphX PageRank Spark GraphX Pregel 二.任务描述 需求概述: 探索航班飞行网图数据 构建航班飞行网图 使用Spark GraphX完成下列任

May_J_Oldhu的博客 1540

Kali Linux下John the Ripper实战:从识别yescrypt哈希到破解zip压缩包(保姆级避坑指南)

本文详细介绍了在Kali Linux中使用John the Ripper工具从识别yescrypt哈希到破解zip压缩包的全过程。针对常见的'No password hashes loaded'报错,提供了两种解决方案,并扩展讲解了哈希识别、zip文件破解及性能优化技巧,是安全测试人员的实用指南。

weixin_29323365的博客 236

Haproxy实现mysql故障切换

服务器配置服务器mysql33063306实现内容:152mysql故障后,自动切换到153服务器的mysql#默认在下/etc/haproxydefaults直接替换,frontend mysql-frontend和backend mysql-backend直接新增使用数据库工具,尝试连接 ip + 13306端口(此处是我监听的13306端口),看是否能正确连接到152服务器上的mysql 将152服务器的mysql服务关掉,过几秒再尝试连接,看是否会自动切换到153服务器的mysql。

weixin_68306078的博客 1178

1000Base-T1协议解读(基于802.3bq-2016 和Test Suite)

1000Base-T1是由一对双绞线实现全双工传输的以太网标准,采用PAM3编码方式(-1,0,1),编码后的实际传输符号速率为750Mbps。该标准的车载最大传输距离可达15米,主要应用于汽车产品开发过程。测试过程示波器要求带宽≥2G,采样率≥7.5Gbps,网分带宽≥1G。

qflook的博客 5335

HDFS-HA高可用

1 HA概述 1)所谓HA(high available),即高可用(7*24小时不中断服务)。 2)实现高可用最关键的策略是消除单点故障。HA严格来说应该分成各个组件的HA机制:HDFS的HA和YARN的HA。 3)Hadoop2.0之前,在HDFS集群中NameNode存在单点故障(SPOF)。 4)NameNode主要在以下两个方面影响HDFS集群 NameNode机...

Faded1573606285的博客 284

Python爬虫教程:抓取纽约时报文章存档

爬虫技术主要用于从网站上抓取并提取数据。HTTP请求:使用requests库发送HTTP请求以获取网页。网页解析:使用或lxml库解析HTML网页。数据存储:将抓取的数据保存为CSV、JSON等格式,或者存储在数据库中。防反爬虫技术:模拟正常的用户请求,避免被反爬虫机制封锁。多线程与异步爬取:提高抓取效率。通过这篇博客,您已经学习了如何使用Python爬取纽约时报的历史文章存档。本文介绍了如何模拟请求头、抓取网页内容、解析HTML并提取数据,最后存储到CSV文件或数据库中。

2201_76125261的博客 593

VSCode 搭建C/C++编程环境 2025新版图文安装教程(VSCode安装 + C/C++环境搭建 + 运行测试 + 背景图设置)

100%搭建成功,VSCode 搭建C++编程环境 2025新版图文安装教程(VSCode安装+C++环境搭建+运行测试+背景图设置)

Code_流苏:在代码中寻诗意,在实践中觅真知 2974

Hadoop HA

HA 概述 所谓HA(High Available),即高可用(7*24小时不中断服务) 实现高可用最关键的策略是消除单点故障,HA 严格来说应该分成各个组件的 HA 机制:HDFS 的 HA 和 YARN 的 HA Hadoop2.0 之前,在 HDFS 集群中 NameNode 存在单点故障(SPOF) NameNode 主要在以下两个方面影响 HDFS 集群 NameNode 机器发生意...

chanyi8784的博客 341

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

第8章 HDFS HA高可用

HDFS HA高可用

留不住斜阳的博客 552

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

HDFS 系列七:HDFS HA 高可用

文章目录7. HDFS HA 高可用7.1 HA 概述7.2 HDFS-HA 工作机制7.3 HDFS-HA 手动故障转移7.3.1 HDFS-HA 工作要点7.3.2 环境准备7.3.3 集群规划7.3.4 配置 HDFS-HA 集群(以三台为例)7.3.5 启动 HDFS-HA 集群7.3.6 HDFS-HA 集群手动故障转移7.4 HDFS-HA 自动故障转移7.4.1 工作要点7.4.2 ...

super_wj0820的博客 1162

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

HDFS HA之手动高可用故障转移配置、自动高可用故障转移配置、配置YARN-HA集群

HDFS HA之手动高可用故障转移配置

花&败 789

Hadoop之HDFS面试知识复习

Hadoop之HDFS面试知识复习 目录 HDFS的存储机制 secondary namenode工作机制 NameNode与SecondaryNameNode 的区别与联系? hdfs整体架构介绍 HAnamenode 是如何工作的? 1. HDFS的存储机制 已详细总结过,请参考:Hadoop之HDFS读写数据流程 2. secondary namenode工作机制 已详细总结过,请...

努力努力再努力L 568

了解Hadoop-HA

1,Hadoop-HA为什么存在? 正式引入Ha机制是从Hadoop2.0开始的。 因为集群中的Namenode存在单点故障,如果只针对于一个Namenode的...

ItStar 282

四、HADOOP(HDFS)-08

四、HADOOP(HDFS)-08 HDFS HA 高可用 1、HA 概述 ​ 1)所谓 HA(High Available),即高可用(7*24 小时不中断服务)。 ​ 2)实现高可用最关键的策略是消除单点故障。HA 严格来说应该分成各个组件的 HA 机制: ​ HDFS 的 HA 和 YARN 的 HA。 ​ 3)Hadoop2.0 之前,在 HDFS 集群中 NameNode 存在单点故障(SPOF)。 ​ 4)NameNode 主要在以下两个方面影响 HDFS 集群 ​ NameNode

不念人间朝暮的博客 194

hadoop HA

HA概述 1)所谓HA(High Availability),即高可用。 2)实现高可用最关键的策略,是消除单点故障。HA严格来说,应该分成各个组件的HA机制。 HDFS的HA YARN的HA 3)Hadoop2.0之前,在HDFS集群中NameNode存在单点故障(SPOF)。 4)NameNode主要在以下两个方面影响HDFS集群。 NameNode机器发生意外,如宕机,集群将无法使用,直到管理员重启 NameNode机器需要升级,包括软件、硬件升级,此时集群也将无法使用 HDFS HA功能通过配置Ac

ckx12138的博客 213

Haddop:HA高可用

HA()即高可用(7*24小时不中断服务),实现高可用最关键的策略就是消除单点故障。HA严格地来说应该分成各个组件的HA机制,HDFS的HA和YARN的HA。Hadoop2.0之前,在HDFS集群中NameNode存在单点故障(SPOF)。NameNode主要在以下两个方面影响HDFSNameNode机器发生意外,如宕机,集群将无法使用,直到管理员重启NameNode机器需要升级,包括软件、硬件升级,此时集群也将无法使用HDFS HA功能通过配置两个NameNodes实现在集群中对NameNode。...

drhrht的博客 196

hadoop高可用安装和原理详解

本篇主要从hdfs的namenode和resourcemanager的高可用进行安装和原理的阐述。 一、HA安装 1、基本环境准备 1.1.1、centos7虚拟机安装,详情见VMware安装Centos7虚拟机 1.1.2、关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.service...

weixin_30535167的博客 550
上一篇: Flink SQL 优化方案总结
下一篇: 常用数据结构空间复杂度及适用场景
走过冬季
博客等级 码龄9年 1609粉丝 341原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

走过冬季

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值