YARN节点故障的容错方案

YARN节点故障的容错方案

  • 1. RM高可用
    • 1.1 选主和HA切换逻辑
  • 2. NM高可用
    • 2.1 感知NM节点异常
    • 2.2 异常NM上的任务处理
  • 4. 疑问和思考
    • 4,1 RM感知NM异常需要10min,对于app来说是否太长了?
  • 5. 参考文档

本文主要探讨yarn集群的高可用容错方案和容错能力的探讨。涉及RM和NM相关组件,在出现单机故障时相关的容错方案。

更多关于分布式系统的架构思考请参考文档关于常见分布式组件高可用设计原理的理解和思考


1. RM高可用

1.1 选主和HA切换逻辑

RM(ResourceManager)的HA机制主要依靠zk完成。整体的逻辑跟HDFS的NN逻辑整体上一致,也略有差别,可以参考 HDFS节点故障的容错方案

相同点
1, RM使用zk的临时锁节点(ActiveStandbyElectorLock)进行选主
2,其他节点的watch机制跟hdfs的逻辑也一致

不同点
1, RM没有另外涉及zkfc辅助选主,而是RM自己完成了相关的逻辑
2,YARN集群没有涉及fencing逻辑。
在这里插入图片描述

2. NM高可用

NM是运行在单个节点上的代理 ,主要职责有

  1. 管理Hadoop集群中单个计算节点,功能包括与ResourceManager保持通信
  2. 管理Container的生命周期、监控每个Container的资源使用(内存、CPU等)情况、追踪节点健康状况、管理日志和不同应用程序用到的附属服务等
  3. 向ResourceManager汇报各个Container运行状态和节点健康状况,并领取有关Container的命令(比如清理Container)。

2.1 感知NM节点异常

NM启动后通过RPC函数ResourceTracker#registerNodeManager向RM注册,之后将被加入到NMLivenessMonitor中进行监控。它必须周期性通过RPC函数ResourceTracker#nodeHeartBeat向RM汇报心跳以表明自己还活着,如果一段时间内(默认是10min)内为汇报心跳,则RM宣布它已经死亡,所以正在运行在它上面的Container将被回收。

当RM判断NM宕机后,需要

  1. RM剔除对应的NM,并将异常NM上的container标记死亡,后续container不会被分配到对应的NM
  2. 通知AM,告知异常NM上的container已经死亡,由AM决定下一步的任务行为。

2.2 异常NM上的任务处理

由于在yarn集群中,任务的管理是通过AM进行管理的,因此RM感知到NM异常后,标记对应的containier死亡,并需要通知对应的AM。NM或者RM并不负责运行在上面的app运行状态,而是由AM来决定下一步动作(AM在跟RM申请一个NM执行container,还是标记app失败等)。

4. 疑问和思考

4,1 RM感知NM异常需要10min,对于app来说是否太长了?

视情况而定。由于RM感知NM异常,需要10min的时间,然后才会通知AM,这个时间相对于大多数任务而言还是比较长的。如果任务对数据的实时性要求很高,建议AM创建container后,container主动给AM汇报心跳,来决定业务行为,能够感觉相关的业务需求来进行开发。通常flink、spark任务都是过该思路进行开发的。

5. 参考文档

  • 一文搞定Journal Node原理

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

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

相关文章

【复现】D-Tale SSRF漏洞(CVE-2024-21642)_26

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 D-Tale数据可视化插件是后端框架Flask与前端框架React组合产生的一款开源的数据可视化分析插件。 目前支持DataFrame、Series、Mu…

深入理解C语言(2):字符、字符串与内存函数

文章主题:字符、字符串与内存函数🌏所属专栏:深入理解C语言📔作者简介:更新有关深入理解C语言知识的博主一枚,记录分享自己对C语言的深入解读。😆个人主页:[₽]的个人主页&#x1f3…

Centos 7.9 服务器环境搭建

Centos 7.9 服务器环境搭建 文章目录 Centos 7.9 服务器环境搭建1、Linux2、宝塔面板3、JDK4、MySQL5、Redis6、Nacos7、Nginx 1、Linux # 查看防火墙状态 systemctl status firewalld# 查看已开放端口命令 firewall-cmd --list-all# 开放端口 firewall-cmd --zonepublic --ad…

简单屏蔽WPforms垃圾留言和无效询盘的方法

简单屏蔽WPforms垃圾留言和无效询盘的方法 发表评论 因为WPforms的可视化操作非常简单,不少外贸网站都使用WPforms来制作询盘表单,而只要网站可以提交留言,就非常容易被垃圾留言骚扰。本文奶爸将给大家介绍两种屏蔽WPforms表单垃圾留言的方…

单片机中MCU跑RTOS相比裸机的优势

经常有读者问关于RTOS的问题,比如:我现在要不要学习RTOS? 学习RTOS有什么好处? 我的项目要不要跑RTOS? 问这些问题,其实归根结底还是对RTOS理解的不够,项目开发的经验还不足等。针对这部分朋友…

实战项目(一)内容管理系统

一、实现技术 前端技术:html、javascript(jquery、ajax、json)、css 后端技术:java、mysql、servlet 开发工具:eclipse、vscode 二、项目描述 首页仿写某大学网页,上面有各种栏目及栏目内容,管理员能登录进去对首…

FPGA之分布式RAM(2)

1) 128 X1 Single Port Distributed RAM 下图中可以看出来,通过2个LUT的组合使用可以串联实现更大深度的分布式RAM.下图中出现了F7BMUX的加入, F7BMUX可以用于LUT输出的选通. 原语调用: RAM128XIS#(INIT(128h00000000000000000000000000000000) // Initial conten…

【Spring Boot 3】【Redis】集成Redisson实现消息发布订阅

【Spring Boot 3】【Redis】集成Redisson实现消息发布订阅 背景介绍开发环境开发步骤及源码一、创建 `springboot3-redis-redisson-mq-interface`二、创建 `springboot3-redis-redisson-mq-pub`三、创建 `springboot3-redis-redisson-mq-pub`四、运行测试工程目录结构背景 软件…

2.服务拆分和远程调用

2.服务拆分和远程调用 任何分布式架构都离不开服务的拆分,微服务也是一样。 2.1.服务拆分原则 这里我总结了微服务拆分时的几个原则: 不同微服务,不要重复开发相同业务微服务数据独立,不要访问其它微服务的数据库微服务可以将…

接口测试详解,看完就会。。。

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是接口测试? 所谓接口,是指同一个系统中模块与模块间的数据传递…

6. Z字形变换(js)

题目: 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下: P A H N A P L S I I G Y I R 之后,你…

力扣移掉k位数字402

Problem: 402. 移掉 K 位数字 给你一个以字符串表示的非负整数 num 和一个整数 k ,移除这个数中的 k 位数字,使得剩下的数字最小。请你以字符串形式返回这个最小的数字。 示例 1 : 给你一个以字符串表示的非负整数 num 和一个整数 k &…

服务器端口被占用怎么解决

服务器端口指的是用一个程序向服务器发起连接时的请求端口。 比如 FTP:23,HTTP:80,SMTP:25 这些都是TCP的端口,有的也用到UDP的端口。 1、公认端口:这种类型的端口通常称为“常用端口”。 这些…

Aria2 WebUI控制台 任意文件读取漏洞复现(CVE-2023-39141)

0x01 产品简介 Aria2 WebUI控制台是用于下载文件的实用程序。它支持 HTTP(S)/FTP/SFTP/BitTorrent 和 Metalink 协议。aria2可以从多个来源/协议下载文件,并尝试利用您的最大下载带宽。它支持同时从HTTP(S)/FTP/SFTP和BitTorrent下载文件,而从HTTP(S)/FTP/SFTP下载的数据上…

kubuctl patch 直接修改yaml文件,不使用edit

kubectl patch命令可以用于直接修改Kubernetes对象,而无需使用edit命令。这种方法非常适合在需要更新某些初始化后无法更新的资源字段时使用。 1、合并 假设我们有一个名为nginx-daemonset.yaml的DaemonSet对象,我们想要在其中添加一个新的容器。 apiV…

怎么抹掉 Macbook系统 并将它还原为出厂设置

抹掉 Mac 并将它还原为出厂设置 借助“抹掉所有内容和设置”这项功能,你可以快速安全地抹掉所有设置、数据和 App,同时保留当前安装的操作系统。 使用“抹掉所有内容和设置” 这项功能要求装有 macOS Monterey 或更高版本,且使用搭载 Apple 芯…

Gin之gin快速开始

1、gin快速开始 1.1 新建一个项目 [rootzsx src]# mkdir ginquickstart [rootzsx src]# cd ginquickstart/ [rootzsx ginquickstart]# go mod init ginquickstart go: creating new go.mod: module ginquickstart1.2 复制启动文件模板到项目目录中 [rootzsx ginquickstart]#…

网络安全笔记

一、简介 网络安全是指通过管理和技术手段保护网络系统免受未经授权的访问、数据泄露、破坏或摧毁。随着互联网的普及,网络安全问题日益突出,对个人和企业信息安全构成了严重威胁。因此,了解和掌握网络安全知识对于保护个人信息和企业数据至…

如何使用C++ max函数

在C中&#xff0c;你可以使用std::max()函数来获取两个值中的较大值。这个函数位于<algorithm>头文件中。 下面是使用std::max()函数的示例代码&#xff1a; #include <iostream> #include <algorithm>int main() {int a 10;int b 20;int max_value std…

关联系统-智能座舱控制器ICC

智能座舱构成 如上图所示&#xff0c;智能座舱主要是由仪表、中控、HUD、语音、DMS/OMS等多种交互通道组成&#xff0c;其宗旨是提升人的交互体验&#xff0c;使车辆更加智能化&#xff0c;情感化。 智能座舱内部功能 仪表功能 SR场景重构 如上图所示&#xff0c;仪表区域可实…