当前位置: 首页 > news >正文

yarn的三大组件及各自作用

YARN的三大核心组件及各自作用

YARN(Yet Another Resource Negotiator)采用 主从(Master-Slave)架构,其核心由三大组件构成,分别负责 资源管理、节点资源监控和任务协调

组件角色核心作用
ResourceManager(RM)主节点全局资源调度器,负责整个集群的资源分配和作业调度。
NodeManager(NM)从节点单个节点的资源代理,管理本机资源(CPU、内存)并执行任务。
ApplicationMaster(AM)任务协调者每个应用程序独有的进程,负责向RM申请资源,并协调任务的执行与容错。

1. ResourceManager(RM)—— 集群资源的总调度官

作用

  • 资源分配:管理集群所有节点的资源(CPU、内存),根据调度策略(如CapacityScheduler、FairScheduler)分配给不同应用。

  • 作业调度:接收客户端提交的作业,启动对应的ApplicationMaster(AM)。

  • 容错监控:监控AM的运行状态,失败时重新分配资源。

关键点

  • 两个核心子组件

    • Scheduler(调度器):纯资源分配器,不关心应用逻辑。

    • ApplicationsManager(应用管理器):负责AM的启动与生命周期管理。

  • 单点故障问题:生产环境需通过 HA(高可用) 配置多个RM避免单点故障。


2. NodeManager(NM)—— 单个节点的资源管家

作用

  • 资源管理:监控本节点的资源使用情况(如CPU、内存、磁盘),定期向RM汇报。

  • 任务执行:根据RM和AM的指令,启动/停止Container(资源容器),运行具体任务(如MapTask、Spark Executor)。

  • 本地化优化:优先使用数据本地化(Data Locality)的Container,减少网络传输。

关键点

  • 每个从节点(DataNode)通常部署一个NM,与HDFS的DataNode共存。

  • 若NM失效,RM会将该节点标记为不可用,并重新调度其上的任务。


3. ApplicationMaster(AM)—— 单个应用的指挥官

作用

  • 资源协商:向RM申请资源(Container),并协商资源需求(如“需要10个Container运行Map任务”)。

  • 任务协调:与NM通信,在分配的Container中启动/监控任务(如MapReduce的MapTask或Spark的Executor)。

  • 容错处理:任务失败时,重新申请资源或调整执行策略。

关键点

  • 每个应用一个AM:例如,一个MapReduce作业或一个Spark作业都有自己的AM。

  • 轻量级设计:AM本身也是运行在Container中的进程,由RM动态分配资源启动。


三大组件协作流程(以MapReduce为例)

  1. 提交作业:客户端向RM提交MapReduce作业。

  2. 启动AM:RM分配一个Container,启动该作业的AM。

  3. 申请资源:AM向RM注册,并申请运行MapTask的Container资源。

  4. 分配资源:RM根据调度策略,通知NM启动Container。

  5. 执行任务:NM在Container中运行MapTask,AM监控任务状态。

  6. 作业完成:AM向RM注销,释放资源。


为什么需要YARN?

  • 解耦资源与计算:在Hadoop 1.0中,MapReduce既负责计算又管理资源,导致扩展性差。YARN将资源管理抽象化,支持多计算框架(如Spark、Flink)。

  • 提高集群利用率:允许多个应用共享集群资源,避免资源浪费。

总结

  • RM 是集群的“大脑”,负责宏观资源调度。

  • NM 是“四肢”,负责单个节点的任务执行。

  • AM 是“项目经理”,为每个应用协调资源和任务。

通过这三者的协作,YARN实现了高效的分布式资源管理,成为Hadoop生态的基石。

http://www.xdnf.cn/news/13087.html

相关文章:

  • easyexcel使用模板填充excel坑点总结
  • Kotlin协程Semaphore withPermit约束并发任务数量
  • chili3d调试笔记3 加入c++ 大模型对话方法 cmakelists精读
  • PY32F003+TIM+外部中断实现对1527解码
  • 【Test Test】灰度化和二值化处理图像
  • 6TOPS算力NPU加持!RK3588如何重塑8K显示的边缘计算新边界
  • 嵌入式音视频开发指南:从MPP框架到QT实战全解析
  • 3D 视觉赋能仓储精准高效:ID Logistics 与 Stereolabs 的创新合作之旅
  • Java开发中的常用注解
  • 字符串系列一>最长回文子串
  • 给予FLUX更好的控制:FLUX.1-dev-ControlNet-Union-Pro-2.0
  • Redis——网络模型之IO讲解
  • 大模型微服务架构模块实现方案,基于LLaMA Factory和Nebius Cloud实现模型精调的标准流程及代码
  • Android——动画
  • IPTV电视信息发布直播点播系统:营造数字化个性化融合化多媒体IPTV电视信息发布平台
  • 预训练与微调:大模型如何“学习知识”?
  • Python 网络爬虫基础理论与实战指南
  • 【每日八股】复习计算机网络 Day1:TCP 的头部结构 + TCP 确保可靠传输 + TCP 的三次握手
  • 【漫话机器学习系列】209.均值的标准误差(Standard Error of the Mean)
  • 完整的 .NET 6 分布式定时任务实现(Hangfire + Redis 分布式锁)
  • 故障诊断常用算法
  • 2025妈妈杯数学建模D题完整分析论文
  • Kubernetes Pod 调度策略:从基础到进阶
  • java面向对象09:方法的重写
  • PyTorch入门------卷积神经网络
  • TCP/IP和UDP协议的发展历程
  • POSIX 信号量(Semaphore)
  • MacOS怎么显示隐藏文件
  • Vue3 实战:打造多功能旅游攻略选项卡页面
  • 记录学习的第二十九天