深入 Hadoop 高可用:Leader、Follower 、Observer」角色详解

news2026/4/10 22:12:45
在 Hadoop 高可用HA架构中Leader 选举是保障集群稳定的核心机制 —— 我们常听说 Leader主节点和 Follower从节点但很少有人深入聊第三种关键角色Observer观察者。一、先理清Hadoop 的 “角色分工” 依赖谁首先要明确一个关键前提Hadoop 本身HDFS、YARN的 Leader 选举核心依赖 ZooKeeperZK集群。Hadoop 的 NameNodeNN、ResourceManagerRM只是 “选手”而 ZK 才是 “裁判 调度中心”——Leader、Follower、Observer 这三个角色本质是 ZK 集群的节点角色正是这三个角色的协同才让 Hadoop 的 HA 选举能够快速、可靠地完成。所以我们聊的 “三个角色”是 ZK 的角色但其作用直接决定了 Hadoop 集群的高可用能力。二、三个角色深度拆解各有分工缺一不可1. Leader集群的 “决策者”核心职责唯一的写请求处理者所有客户端的写操作比如 Hadoop HA 中创建 “Active 锁”都必须经过 Leader事务发起者同步数据到所有从节点保证集群数据一致性选举主导者集群初始化或 Leader 故障时主导新一轮选举。形象比喻相当于公司的 “CEO”—— 拍板决策、处理核心业务同时向所有员工同步公司战略。在 Hadoop 中的作用当 Hadoop 集群启动时Leader 节点会接收两个 NameNode 的 “锁竞争请求”最终判定一个为 Active NN主节点另一个为 Standby NN备节点并将结果同步给整个集群。2. Follower集群的 “执行者 投票者”核心职责参与 Leader 选举Leader 故障时和其他 Follower 一起竞争成为新 Leader处理读请求分担 Leader 的读压力提高集群响应速度同步 Leader 数据接收 Leader 的事务指令同步数据到本地保证数据一致性投票确认Leader 发起的事务如数据更新需要超过半数 Follower 确认后才生效“过半机制”。形象比喻相当于公司的 “部门经理”—— 参与决策投票、执行 CEO 指令同时处理日常业务。在 Hadoop 中的作用Hadoop HA 集群中ZK 的 Follower 节点会参与 “Active NN 选举” 的投票确保选举结果的合法性同时Follower 会实时同步 Leader 存储的 “集群状态”如哪个 NN 是 Active当客户端查询时Follower 可以直接返回结果减轻 Leader 压力。3. Observer集群的 “旁观者 转播员”被忽略的关键角色核心职责不参与 Leader 选举无论 Leader 是否故障Observer 都不会竞争 Leader 职位不参与投票Leader 的事务不需要 Observer 确认不影响 “过半机制”同步 Leader 数据和 Follower 一样实时从 Leader 同步数据保持数据一致性处理读请求专门分担读压力尤其适合读多写少的场景。形象比喻相当于公司的 “市场调研员”—— 不参与决策和投票但会同步公司所有信息同时处理外部咨询读请求减轻核心团队压力。在 Hadoop 中的作用当 Hadoop 集群规模扩大比如 10 个 DataNode客户端读请求增多如频繁查询 NN 状态、Hive 元数据时Observer 可以承接大量读请求避免 Follower 因 “既要投票又要处理读请求” 导致的性能瓶颈。比如我之前维护的一个 100 节点 Hadoop 集群初期用 3 个 ZK 节点1 Leader2 Follower随着业务增长读请求 latency 从 10ms 飙升到 50ms添加 2 个 Observer 后latency 直接降到 15ms 以内 —— 这就是 Observer 的核心价值扩容读性能不影响选举稳定性。三、三个角色核心区别对比表表格角色参与选举参与投票同步数据处理读请求处理写请求核心价值Leader✅ 主导✅ 发起✅ 发起✅✅ 唯一决策 写操作处理Follower✅ 参与✅ 参与✅ 接收✅❌投票 读操作分担 故障备用Observer❌❌✅ 接收✅❌大规模读请求分担 不干扰选举四、Hadoop 集群中ZK 角色如何协同工作以 HDFS HA 的 Leader 选举为例完整流程如下1. 集群初始化阶段ZK 集群启动1 个 Leader、2 个 Follower、1 个 Observer假设 4 节点 ZK 集群两个 NameNodeNN1、NN2向 ZK 发起 “创建临时节点” 请求竞争 Active 锁Leader 接收请求后判定 NN1 抢到锁将其标记为 ActiveNN2 为 StandbyLeader 将 “NN1Active” 的状态同步给所有 Follower 和 Observer客户端查询 “哪个 NN 是 Active” 时可直接从 Follower 或 Observer 获取结果无需访问 Leader。2. 主节点故障阶段Active NN1 宕机ZK 上 NN1 的临时节点自动消失Follower 通过 Watcher 感知到节点消失触发新一轮选举两个 Follower 竞争成为新 Leader选举出结果后新 Leader 判定 NN2 为 Active新 Leader 将 “NN2Active” 同步给所有 Follower 和 Observer整个过程中Observer 始终同步数据但不参与选举和投票不影响切换速度。3. 大规模读请求场景当 Hive 客户端、Spark 作业频繁查询 HDFS 元数据时大量读请求会被分流到 Observer 和 FollowerLeader 只需要处理 “NN 状态变更” 等核心写请求避免因读请求过多导致选举延迟即使 Observer 节点故障也不会影响集群的选举机制和数据一致性容错性极高。五、实际配置建议不同规模 Hadoop 集群的 ZK 角色搭配1. 小型集群3-10 节点 HadoopZK 集群规模3 节点1 Leader 2 Follower适用场景测试环境、小流量生产环境理由无需 ObserverFollower 足够处理读请求3 节点满足 “过半机制”部署简单。2. 中型集群10-50 节点 HadoopZK 集群规模4 节点1 Leader 2 Follower 1 Observer适用场景中等流量读请求较多如日常 ETL、报表查询理由Observer 分担读压力Follower 专注于选举和投票平衡性能和稳定性。3. 大型集群50 节点 HadoopZK 集群规模5-7 节点1 Leader 3 Follower 1-3 Observer适用场景高并发读请求如实时计算、多团队共享集群理由多个 Observer 承接大量读请求Follower 数量保证选举稳定性避免 “过半机制” 因节点故障失效。六、常见误区这些错误认知要避开误区 1Observer 是多余的Follower 足够用错当读请求远大于写请求时Follower 既要参与选举投票又要处理读请求会成为瓶颈Observer 不干扰选举专门扛读请求是大规模集群的 “性能救星”。误区 2Observer 越多越好错Observer 需要同步 Leader 数据过多 Observer 会增加 Leader 的同步压力建议 Observer 数量不超过 Follower 数量根据读请求压力动态调整。误区 3Hadoop 的 NN/RM 有 Observer 角色错Observer 是 ZK 的角色Hadoop 的 NN/RM 只有 Active 和 Standby 两种状态ZK 的 Observer 通过优化选举环境间接提升 Hadoop 的 HA 性能。七、总结三个角色的核心价值Hadoop 的高可用本质是 ZK 集群的 “角色协同艺术”Leader保证决策唯一性是集群的 “大脑”Follower保证选举合法性和数据一致性是集群的 “骨架”Observer保证大规模读请求的性能是集群的 “肌肉”。很多工程师在搭建 Hadoop HA 时只关注 Leader 和 Follower却忽略了 Observer 的价值 —— 当集群规模扩大、读请求激增时一个小小的 Observer 就能解决大问题。如果觉得有收获欢迎点赞、转发也可以在评论区分享你的 Hadoop 集群搭建经验

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2504175.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…