【YARN】详解 YARN 中的 ResourceManager

news2025/1/20 14:55:05

详解 YARN 中的 ResourceManager

  • 1.ResourceManager 核心功能
  • 2.通信(与三个角色通信)
  • 3.模块简介
    • 3.1 用户交互模块
    • 3.2 NM 管理模块
    • 3.3 AM 管理模块
    • 3.4 Application 管理模块
    • 3.5 状态机模块
    • 3.6 安全模块
    • 3.7 资源分配模块
  • 4.模块详解​​
    • 4.1 用户交互模块
    • 4.2 NM 管理模块
    • 4.3 AM 管理模块
    • 4.4 Application 管理模块
  • 5.特点

1.ResourceManager 核心功能

YARN 通过分配资源和调度任务来执行所有处理活动。 Apache Hadoop YARN 架构由以下主要组件组成:

  • 资源管理器Resource Manager):在主守护进程上运行并管理集群中的资源分配。
  • 节点管理器Node Manager):它们在从属守护进程上运行,负责在每个数据节点上执行任务。
  • 应用程序主控Application Master):管理各个应用程序的用户作业生命周期和资源需求。它与节点管理器一起工作并监视任务的执行。
  • 容器Container):单个节点上的 RAM、CPU、网络、HDD 等资源的封装。

在这里插入图片描述
ResourceManager 的核心功能:集群资源统一管理和调度

  • 管理 NodeManager,并接受资源汇报信息
  • 管理 ApplicationMaster,并分配资源
  • 响应客户端,并处理请求

更多可参考:《了解 YARN 架构的基础知识》

2.通信(与三个角色通信)

  • NodeManager 通信(ResourceTracker)
    • 注册、心跳(汇报节点健康状况)、Container 运行状态
    • 领取执行指令(启动 / 清理 / 删除 Container)
  • ApplicationMaster 通信(ApplicationMasterProtocol)
    • 注册、心跳
    • 申请 / 释放资源
  • 客户端 通信(ApplicationClientProtocol)
    • 提交 / 查询 / 控制应用程序

3.模块简介

在这里插入图片描述

3.1 用户交互模块

  • ClientRMService:处理普通用户的请求(提交、终止程序以及查询程序状态等)。
  • AdminService:处理管理员的请求(更新节点 / ACL列表、更新队列信息等),防止大量的普通用户请求导致管理命令饿死。
  • WebApp:通过 Web 页面展示集群资源使用情况和程序使用情况。

3.2 NM 管理模块

  • NMLivelinessMonitor:监控 NM 状态。若没有定期(默认10min)汇报心跳,则从集群中移除。
  • NodesListManager:维护正常节点和异常节点列表。两个列表都是在配置文件中设置的,可动态加载。
  • ResourceTrackerService:处理 NM 的请求。

3.3 AM 管理模块

  • AMLivelinessMonitor:监控 AM 状态。若没有定期(默认10min)汇报心跳,则认为它死掉了,它上面运行的 Container 都被置为失败状态。AM 会被重新分配到另一个节点上执行(用户指定重试次数,默认为 2)。
  • ApplicationMasterLauncher:与 NM 进行通信,下发命令启动 ApplicationMaster
  • ApplicationMasterServiceAMS):处理来自 AM 的请求。
    • 注册:ApplicationMaster 启动节点对外 RPC 端口号和 Tracking URL 等信息。
    • 心跳:汇报所需资源描述、待释放的 Container 列表、黑名单列表等。返回值是新分配的 Container、失败的 Container、待抢占的 Container 列表等信息。

3.4 Application 管理模块

  • ApplicationACLsManager:管理应用程序访问权限。
    • 查看权限:查看应用程序基本信息。
    • 修改权限:修改程序优先级、杀死应用进程等。
  • RMAppManager:管理应用程序的启停。
  • ContainerAllocationExpirer:决定 Container 是否被回收以及执行。当 AM 收到 RM 新分配的 Container 后,必须在一定时间内(默认10min)在对应的 NM 启动该 Container,否则 RM 将强制回收该 Container。

3.5 状态机模块

  • RMApp:维护一个应用程序的生命周期。
  • RMAppAttempt:维护 RMApp 产生的小任务生命周期。
  • RMContainer:维护 Container 的生命周期。目前的 Container 不支持重用,看看后期是否可重用。
  • RMNode:维护 NodeManager 的生命周期。

3.6 安全模块

由以下子模块组成:

  • ClientToAMSecretManager
  • ContainerTokenSecretManager
  • ApplicationTokenSecretManager

3.7 资源分配模块

ResourceScheduler:负责将资源分配给应用程序

  • 批处理资源调度器:FIFO
  • 多用户调度器:Fair SchedulerCapacity Scheduler

4.模块详解​​

4.1 用户交互模块

在这里插入图片描述

ClientRMService 和 AdminService 两个服务分别处理普通用户和管理员的请求。

  • ClientRMService:本质是 RPC Server(实现 ApplicationClientProtocol),给客户端提供 RPC 服务。ClientRMService 中保留了 RM 上下文对象 RMContext,中央异步调度器(AsyncDispatcher)通过 RMContext 来获取节点列表、队列组织和应用列表等信息来响应客户端请求。
  • AdminService:本质也是RPC Server,不过服务对象是管理员。yarn.admin.acl设置的,默认是*,表示所有用户都是管理员

4.2 NM 管理模块

在这里插入图片描述
由以下三个组件共同组成

  • NMLivelinessMonitor
    • 当前正在运行的 NM 会保存在 RM 的一个数据结构中,NMLivelinessMonitor 就周期遍历,若一个 NM 在一定时间(默认10分钟)未汇报心跳,则认为其挂了。
    • 心跳周期(默认十分钟):​​​yarn.nm.liveness-monitor.expiry-interval-ms​​
  • NodesListManager:管理 RM 的节点
    • 指定白名单文件:​​yarn.resourcemanager.nodes.include-path​​​
    • 指定黑名单文件:​​yarn.resourcemanager.nodes.exclude-path​​
    • 再执行以下命令让配置生效 ​​bin/yarn rmadmin -refreshNodes​​
  • ResourceTrackerService
    • 本质是 RPC Server,处理 NM 请求(通过 ApplicationMasterProtocol 协议)。
    • 注册(单次):NM 启动时发送该请求,携带节点 ID、可用资源的上限和对外开放的 HTTP 端口。
    • 心跳(周期):包含运行的 Application 列表、节点健康状况和 Container 运行状态等。返回待释放的 Container 列表、Application 列表。

4.3 AM 管理模块

在这里插入图片描述
由以下三个组件共同组成:

  • ApplicationMasterLauncher:既是服务也是事件处理器,响应 AMLauncherEvent 事件(启动 / 清理 AM)
    • 启动 AM。通过 ContainerManagementProtocol 跟 NM 通信,将启动 AM 所需的信息如启动命令、JAR 包、环境变量等信息封装成 StartContainerRequest 对象发送给 NM。
    • 清理 AM。通过 ContainerManagementProtocol 跟 NM 通信,要求其杀死 AM。
  • ApplicationMasterService:负责跟 AM 通信,处理 AM 的请求(通过 ApplicationMasterProtocol 协议)
    • 注册(单次):AM 启动时发送该请求,携带所在节点、RPC 端口和 Tracking URL 等信息。
    • 心跳(周期):包含请求资源的类型、待释放的 Container 列表等。AMS 返回新分配的 Container、失败的 Container 等信息。
    • 清理(单次):AM 向 RM 发送清理请求,来回收 / 清理各种资源。回收 AM 所占的 Container 和将 AM 从 AMLivelinessMonitor 中删除。
  • AMLivelinessMonitor
    • 周期性遍历所有 AM,如果有 AM 没有定期发送心跳则认为它挂了,它所持有的 Container 全部设置为失败。RM 会重新为它分配资源并在另一个节点上启动。
    • 心跳时间(默认十分钟):​​yarn.am.liveness-monitor.expiry-interval-ms​​​
    • AM 失败重试次数(默认两次):​​yarn.resourcemanager.am.max-attempts​​

4.4 Application 管理模块

在这里插入图片描述

管理 Application 的生命周期、权限等。

  • ApplicationACLsManager
    • 管理应用程序查看 / 修改权限
    • 通过该参数配置权限 ​​​yarn.admin.acl​​
  • RMAppManager
    • 负责应用程序的启停
    • 将应用程序放到应用程序列表中
    • 将应用程序从 RMStateStore 中移除
    • 通过该参数设置最大应用数:​​yarn.resourcemanager.max-completed-applications​​
  • ContainerAllocationExpirer
    • 管理 Container 的使用
    • 如果某个 AM 拿到 Container 后一段时间内都没使用,则会强制回收(提高利用率)
    • 等待时间 :​​yarn.resourcemanager.rm.container-allocation.expiry-interval-ms​​

5.特点

事件驱动:中央异步调度器将组件 / 服务组织在一起,各个组件 / 服务的输出都是事件,组件 / 服务之间的交互都是通过事件,从而实现了异步并行的高效系统。

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

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

相关文章

如何使用ArcGIS Pro进行坡度分析

坡度分析是地理信息系统中一种常见的空间分析方法,用于计算地表或地形的坡度,这里为大家介绍一下如何使用ArcGIS Pro进行坡度分析,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的DEM数据,除了DEM数据&…

一般情况下使用耳机壳UV树脂制作耳机壳的成本是多少?

一般情况下使用耳机壳UV树脂制作耳机壳的成本是多少? 使用耳机壳UV树脂制作耳机壳的成本主要包括材料成本、加工成本和其他附加成本。 材料成本主要取决于所采购的UV树脂的数量和单价。如果购买数量较大,单价可能会较低。市场上不同品牌和型号的UV树脂…

ubuntu 20.04 安装 huggingface transformers 环境

1. 安装 cuda 大多数新发布的大语言模型使用了较新的 PyTorch v2.0 版本,Pytorch 官方认为 CUDA 最低版本是 11.8 以及匹配的 GPU 驱动版本。详情见Pytorch官方 如下图: 1.1 下载 cuda cuda 12.1 官方网站: 下载: $wget htt…

部署LVS负载均衡架构

目录 一、ipvsadm 工具 二、NAT模式下部署LVS负载均衡 1、部署NFS共享存储服务器 1.1 安装NFS软件 1.2 新建共享目录和站点文件 1.3 设置共享策略 2、部署节点服务器1 2.1 安装并启动nginx软件 2.2 挂载共享目录到网页站点目录 2.3 修改网关 3、部署节点服务器2 3.…

【网络应用层协议】【MQTT】详解消息队列遥测传输协议MQTT(超详细)

目录 1. MQTT 协议简介 2. MQTT 的特点 3. MQTT 协议原理 4. MQTT协议中的订阅、主题、会话 1. MQTT 协议简介 MQTT( Message Queuing Telemetry Transport,消息队列遥测传输协议 )是一种消息列队传输协议,采用订阅、发布机制&…

coqui-ai/TTS 案例model文件

GitHub - coqui-ai/TTS: 🐸💬 - a deep learning toolkit for Text-to-Speech, battle-tested in research and production Coqui AI的TTS是一款开源深度学习文本转语音工具,以高质量、多语言合成著称。它提供超过1100种语言的预训练模型库&…

递增三元组(第九届蓝桥杯)

文章目录 题目原题链接思路分析二分做法1二分做法2双指针做法前缀和解法 题目 原题链接 递增三元组 思路分析 由时间复杂度可知需要至少优化到 O ( n l o g n ) O(nlogn) O(nlogn)才行 而纯暴力枚举三个数组的话: O ( n 3 ) O(n^3) O(n3) 可以考虑将b[]作为标志&…

onlyoffice监听https

修改onlyoffice 在开始将您的ONLYOFFICE Docs切换到HTTPS协议之前,您需要创建一个安全证书和证书私钥。将它们放到安装ONLYOFFICE Docs的计算机上的一个文件夹中。 获得证书后,请执行以下步骤: 所有命令都应以管理员权限执行。要以管理员身份…

【HTML】HTML基础7.3(自定义列表)

目录 标签 效果 代码 注意 标签 <dl> <dt>自定义标题</dt><dd>内容1</dd><dd>内容2</dd><dd>内容3</dd> 。。。。。。 </dl> 效果 代码 <dl><dt>蜘蛛侠系列</dt><dd>蜘蛛侠1</dd…

如何远程连接服务?

"天联"是一种远程连接服务&#xff0c;可以实现异地统一管理、随时随地协同办公和远程数据采集管理等功能。 1. 零售、收银软件应用实现异地统一管理 在医药、餐饮、商超等零售行业中&#xff0c;经常需要对分布在不同地点的店铺进行管理。"天联"提供了远…

计算机组成原理-微程序控制器实验——沐雨先生

一、实验目的 1.掌握微程序控制器的组成原理和工作过程。 2.理解微指令和微程序的概念,理解微指令与指令的区别与联系。 3.掌握指令操作码与控制存储器中微程序的对应方法&#xff0c;熟悉根据指令操作码从控制存储器中读出微程序的过程。 二、实验要求 1.做好实验预习&am…

《教育知识与能力》中教师资格证笔试黄金卷(二)

1&#xff0e;古希腊古典时代教育中&#xff0c;以雄辩和与青年智者的问答法而著名的教育家是&#xff08;A &#xff09;。 A&#xff0e;苏格拉底 B&#xff0e;柏拉图C&#xff0e;亚里士多德D&#xff0e;昆体良 2&#xff0e;世界上不同民族的教育往往表现出不同的传统和特…

学习 考证 帆软 FCP-FineBI V6.0 心得

学习背景&#xff1a; 自2024年1月起&#xff0c;大部分时间就在家里度过了&#xff0c;想着还是需要充实一下自己&#xff0c;我是一个充满热情的个体。由于之前公司也和帆软结缘&#xff0c;无论是 Fine-Report 和 Fine-BI 都有接触3年之久&#xff0c;但是主要做为管理者并…

Spark(2)-基础tranform算子(一)

一、算子列表 编号名称1map算子2flatMap算子3filter算子4mapPartitions算子5mapPartitionsWithIndex算子6keys算子7values算子8mapValues算子9flatMaplValues算子10union算子11reducedByKey算子12combineByKey算子13groupByKey算子14foldByKey算子15aggregateByKey算子16Shuff…

内含资料下载丨黄东旭:2024 现代应用开发关键趋势——降低成本、简化架构

作为一名工程师和创业者&#xff0c;创办 PingCAP 是我进入创新世界的一次深潜。这段旅程既有令人振奋的发现&#xff0c;也充满令人生畏的不确定性。作为这次探险之旅见证的 TiDB &#xff0c;现在已在全球服务超过 3000 家企业&#xff0c;其中有已经实现了商业成功的大公司&…

Mantle生态创新Meme项目Puff开启创世Mint,一文了解玩法、空投+Mint教程

大饼马上破前高&#xff0c;Ethereum 的再质押赛道吸引了大量资金&#xff0c;PEPE、DOGE等代币的 Memecoin 也一路飞涨&#xff0c;整个加密市场都充斥着金钱的味道&#xff01;目前&#xff0c;贪婪与恐惧指数已经达到了90&#xff0c;属于极度贪婪区间。越是这样的狂欢时刻&…

数据处理分类、数据仓库产生原因

个人看书学习心得及日常复习思考记录&#xff0c;个人随笔。 数据处理分类 操作型数据处理&#xff08;基础&#xff09; 操作型数据处理主要完成数据的收集、整理、存储、查询和增删改操作等&#xff0c;主要由一般工作人员和基层管理人员完成。 联机事务处理系统&#xff…

解读Linux文件目录权限:srw-rw----

在Linux系统中&#xff0c;文件或目录的权限由10个字符表示&#xff0c;分为四段&#xff1a; 第一个字符&#xff1a;表示文件类型。d代表目录&#xff0c;-代表普通文件&#xff0c;l代表符号链接&#xff0c;s代表套接字&#xff08;socket&#xff09;&#xff0c;c代表字符…

TypeScript学习笔记(上):TypeScript的介绍、安装及常用类型

我对TypeScript的理解就是&#xff0c;TypeScript是增加了类型校验的JavaScript&#xff0c;能够把运行期错误提升至编译期 TypeScript是什么&#xff1f; TypeScript&#xff08;简称&#xff1a;TS&#xff09;是 JavaScript 的超集&#xff08;JS 有的 TS 都有&#xff09…

MySQL-视图:视图概述、使用视图注意点、视图是否影响基本表

视图 一、视图概述二、使用视图注意点三、视图操作是否影响基本表 一、视图概述 在数据库管理系统中&#xff0c;视图&#xff08;View&#xff09;是一种虚拟表&#xff0c;它并不实际存储数据&#xff0c;而是基于一个或多个实际表的查询结果。视图提供了一种对数据库中数据…