【深入浅出 Yarn 架构与实现】4-2 RM 管理 Application Master

news2024/11/21 1:39:53

上一篇文章对 ResourceManager 整体架构和功能进行了讲述。本篇将对 RM 中管理 Application Master 的部分进行深入的讲解。
下面将会介绍 RM 与 AM 整体通信执行流程,并对 RM 中涉及的对应服务进行具体讲解。
为了更好的学习本篇知识,建议先熟悉以下知识点,不了解的部分可翻到前面对应的文章进行学习:

  • RPC(2-2 Yarn 基础库 - 底层通信库 RPC)
  • 事件处理器(2-3 Yarn 基础库 - 服务库与事件库)
  • AM 程序执行流程(3-3 Yarn Application Master 编写)

一、AM 执行流程

客户端提交任务到 RM 后,启动 AM 到任务完成的流程如下所示:
image.png

各个步骤具体执行操作请对应下面各服务讲解。

二、AM 管理主要组成

ApplictionMaster 管理部分主要由三个服务构成,它们共同管理应用程序的 AM 的生存周期。
(以下服务均能根据名称找到源码中对应的类,可以看其具体的实现逻辑)

一)ApplicationMasterLauncher

  • 「服务&事件处理器」处理 AM 的 LAUNCH 和 CLEANUP 事件
  • 从源码中可以看到:EventHandler 的 handle 方法收到 AM 事件后创建 Runnable 对象,之后会放到 masterEvents 阻塞队列中,launcherHandlingThread 不断从队列中取出事件,提交到线程池 launcherPool 中处理。(流程图如下所示)

image.png

二)AMLivelinessMonitor

  • 检查服务活性(是否有心跳)
  • 继承自抽象类 AbstractLivelinessMonitor,在抽象类中已经实现好 live 检查逻辑,在一段时间内未汇报心跳信息,则任务其挂了。AMLivelinessMonitor 只需定义当 AM 被认为挂了(expire)时,需要处理的逻辑。
  • 当失败时会发一个 RMAppAttemptEvent EXPIRE 事件。

抽象类 AbstractLivelinessMonitor 简要介绍:

public abstract class AbstractLivelinessMonitor<O> extends AbstractService {
    
// 里面最重要的检查函数
// 定期遍历记录的 list,看是否有超时的
// 检查周期默认为超时时间的 1/3
  private class PingChecker implements Runnable {

    @Override
    public void run() {
      while (!stopped && !Thread.currentThread().isInterrupted()) {
        synchronized (AbstractLivelinessMonitor.this) {
          Iterator<Map.Entry<O, Long>> iterator = 
            running.entrySet().iterator();

          //avoid calculating current time everytime in loop
          long currentTime = clock.getTime();

          while (iterator.hasNext()) {
            Map.Entry<O, Long> entry = iterator.next();
            if (currentTime > entry.getValue() + expireInterval) {
              iterator.remove();
              expire(entry.getKey());
              LOG.info("Expired:" + entry.getKey().toString() + 
                      " Timed out after " + expireInterval/1000 + " secs");
            }
          }
        }
        try {
          Thread.sleep(monitorInterval);
        } catch (InterruptedException e) {
          LOG.info(getName() + " thread interrupted");
          break;
        }
      }
    }
  }

三)ApplicationMasterService

  • 是 RM RPC 服务端 ApplicationMasterProtocol 的实现类。
  • 接收处理来自 AM 的请求:主要包括注册、心跳、清理三类。
  • 心跳通过 ApplicationMasterProtocol#allocate 方法定期调用实现,主要作用:
    • 请求资源
    • 获取新分配的资源
    • 定期告诉 RM 其还活着(心跳)

三、小结

本篇主要介绍了 RM 中对 AM 的管理部分。首先介绍了 RM 相关组件与 AM 交互流程,之后对各服务执行逻辑、RPC 调用等进行了详细的介绍。本篇中仅对 ApplicationMasterLauncher 组件进行了详细讲解,并绘图说明,其余部分各位同学感兴趣可自行梳理。
在学习这部分知识时,建议对照源码进行梳理,可以更好的了解其中的流程。

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

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

相关文章

股票量化分析工具QTYX使用攻略——实盘交易信号监控(更新2.5.7)

搭建自己的量化系统如果要长期在市场中立于不败之地&#xff01;必须要形成一套自己的交易系统。如何学会搭建自己的量化交易系统&#xff1f;边学习边实战&#xff0c;在实战中学习才是最有效地方式。于是我们分享一个即可以用于学习&#xff0c;也可以用于实战炒股分析的量化…

3天学会撰写软件发明专利——5.专利法律常识

“无意中发现了一个巨牛的人工智能教程&#xff0c;忍不住分享一下给大家。教程不仅是零基础&#xff0c;通俗易懂&#xff0c;而且非常风趣幽默&#xff0c;像看小说一样&#xff01;觉得太牛了&#xff0c;所以分享给大家。点这里可以跳转到教程。”。 1)假冒专利行为及其法…

Activemq的Broker

目录 一、broker是什么 二、启动broker时指定配置文件 三、嵌入式Broker &#xff08;一&#xff09;Pom.xml &#xff08;二&#xff09;Broker实例 &#xff08;三&#xff09;验证 一、broker是什么 相当于一个ActiveMQ服务器实例。说白了&#xff0c;Broker其实就是…

YK-L1刷机

文章目录1.测试是否能够连接到路由器2.刷breed3.Padavan firmware编译4.烧板5.验证杂文1.1内核模块编写&#xff08;使用insmod方式&#xff09;1.2内核模块编写&#xff08;跟随内核一起编译&#xff09;参考资料1.测试是否能够连接到路由器 插上网线和电脑相连&#xff0c;网…

计算机网络基础——一文详解IPv4与子网划分

IPv4地址概述 在因特网中&#xff0c;为了实现计算机之间的相互通信&#xff0c;通常需要为每台计算机分配一个IP地址。在互联网的发展过程中主要有两个版本的互联网协议&#xff0c;分别是IPv4(Internet Protocol version4)和IPv6 (Internet Protocol version 6) IPv4的IP地址…

SpringBoot:模块探究之spring-boot-starters

Spring Boot Starters 是一组方便的依赖描述符&#xff0c;您可以将它们包含在您的应用程序中。您可以获得所需的所有 Spring 和相关技术的一站式服务&#xff0c;而无需搜索示例代码和复制粘贴大量依赖项描述符。 例如&#xff0c;如果想使用 Spring 和 JPA 进行数据库访问&am…

SpringBoot整合Redis实现几种自定义数据序列化存储方式

JDK自带序列化方式 在Java中RedisTemplete提供了统一的API来操作Redis&#xff0c;比如插入一条String类型的数据&#xff0c;我可以用 redisTemplate.opsForValue().set("name", "美羊羊"); SpringDataRedis可以接收任何类型的对象并将其转成Redis可以处…

小布助手,身入大千世界

在2018年—2019年&#xff0c;AI智能助手一度火热&#xff0c;成了科技行业的全新风口。智能音箱与手机中&#xff0c;我们能看到各种各样的智能助手横空出世&#xff0c;一度成为产品标配。但随着时间缓缓冲刷&#xff0c;就像所有科技风口一样&#xff0c;有的AI智能助手随着…

一种非侵入式幂等性的Java实现

今天我们来谈谈什么是幂等性&#xff1f; 引用百度百科的解析如下&#xff1a; 幂等&#xff08;idempotent、idempotence&#xff09;是一个数学与计算机学概念&#xff0c;常见于抽象代数中。 在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同…

3ds Max:标准几何体

三维软件中一般有许多非常复杂的命令&#xff0c;能够完成非常复杂的图形运算&#xff0c;但其实许多绚丽的图形也是由最基本的几何体构成&#xff0c;许多复杂的命令也是基本的运算程序的集合&#xff0c;就像是砖块&#xff0c;构成了复杂的大厦。任何一个几何体&#xff0c;…

【QGIS入门实战精品教程】3.4:QGIS创建、连接、打包GeoPackage数据库及数据入库案例详解

GeoPackage(以下简称gpkg),内部使用SQLite实现的一种单文件、与操作系统无关的地理数据库。在QGIS中可以很方便的实现GeoPackage的创建与连接等操作。 文章目录 一、QGIS创建GeoPackage1. 创建数据库2. 数据入库二、矢量数据打包为GeoPackage1. 加载shp文件2. 使用QGIS打包图…

微信键盘好用吗?

相信大家在手机上已经安装了一款自己比较熟练使用地输入法&#xff0c;最近微信推出了微信键盘&#xff0c;作为一名产品经理&#xff0c;当然不能错过试用它&#xff0c;我在第一时间下载进行了使用&#xff0c; 下面是我使用了几天的感受&#xff0c;与大家分享一下。 一、体…

2023年5大网络安全趋势加速发展

©网络研究院 Netwrix发布了2023年将影响各种规模组织的关键网络安全趋势。以下是你需要注意的五个具体趋势: 网络犯罪的业务将进一步专业化 Emotet、Conti和Trickbot等恶意软件的回归表明网络雇佣犯罪的扩张。特别是&#xff0c;勒索软件即服务的增长使没有深厚技术技能…

VSCode 最全实用插件

一、必备插件 &#x1f33e;Chinese&#xff08;中文&#xff09; Settings Sync&#xff08;配置同步到云端&#xff09; 可以让我们的vscode配置同步到云端&#xff0c;当我们跟换电脑或者再次安装vscode的时候&#xff0c;只需要登录账号即可同步配置了 wakatime&#xf…

Linux_日志

1.日志的介绍 1.日志文件是重要的系统信息文件 ,其中记录了许多重要的系统事件,包括用户的登录信息、系统的 启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等。 2.日志对于安全来说也很重要 &#xff0c;它记录了系统每天发生的各种事情,通过日志来检查错误发生的…

Golang 【basic_leaming】3 流程控制

阅读目录Go 语言 if else (条件判断)Go 语言 if else 条件判断代码示例if 的特殊写法Go 语言 for&#xff08;循环&#xff09;for 循环 - 初始语句for 循环 - 条件表达式1 更美观的死循环写法2 只有一个条件的 for 循环for 循环 - 结束语句Go 语言 for range (键值循环)for ra…

前端自动化测试精讲

单元测试 端对端测试 持续集成方案&#xff0c;在项目中落地前端自动化测试 作者介绍 祯民&#xff0c;字节跳动前端开发工程师&#xff0c;掘金小册《SSR实战&#xff1a;官网开发指南》作者&#xff0c;公众号「祯民讲前端」作者。曾负责 抖音前端技术团队官网 和 字节官网…

RV1126笔记十二:实现RTMP单路拉流

若该文为原创文章,转载请注明原文出处。 一、介绍 相比推流,拉流就简单了一点,只需要连接RTMP服务器,获取流,把数据解码出来显示和播放就可以,使用的是易百纳板子,测试时音频输出是不正常的,所以只解析了视数据,不处理音频。如果想测试音频,建议用其他开发板,正点…

TikTok 加速团结独立站,跨境电商的又一次红利期?

TikTok近年来在国际上非常流行。2021年8月&#xff0c;TikTok的全球下载量首次超过Facebook&#xff0c;成为全球最大的下载量。TikTok的诞生打破了海外社交媒体的垄断&#xff0c;TikTok营销成为许多跨境卖家的重点之一。 封号事件发生后&#xff0c;许多跨境卖家开始向独立站…

我的周刊(第071期)

我的信息周刊&#xff0c;记录这周我看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。&#x1f3af; 项目Free-TVUrl-Merge[1]免费 TvBox 影视站聚合&#xf…