当前位置: 首页 > 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生态的基石。

相关文章:

  • 小白从0学习网站搭建的关键事项和避坑指南(2)
  • Privacy Risks of General-Purpose Language Models
  • 京东物流基于Flink StarRocks的湖仓建设实践
  • vscode 红色波浪线问题
  • srp batch
  • 用 Go 实现一个轻量级并发任务调度器(支持限速)
  • 多线程编程的简单案例——单例模式[多线程编程篇(3)]
  • NFC 碰一碰发视频源码搭建,碰一碰发视频定制化开发技术
  • Redis 的指令执行方式:Pipeline、事务与 Lua 脚本的对比
  • ROS机器人一般用哪些传感器?
  • 初识Redis · 客户端“Hello world“
  • R 语言科研绘图 --- 饼状图-汇总
  • Yum镜像源
  • 中间件--ClickHouse-10--海量数据存储如何抉择ClickHouse和ES?
  • 【系统分析师】-软件工程
  • 【文件操作与IO】详细解析文件操作与IO (一)
  • 探索 Higress:下一代云原生 API 网关
  • 前端融合图片mask
  • 高级java每日一道面试题-2025年4月13日-微服务篇[Nacos篇]-Nacos如何处理网络分区情况下的服务可用性问题?
  • ubantu18.04(Hadoop3.1.3)之MapReduce编程
  • 神二十成功对接空间站
  • 陕西全省公开征集涉企行政执法问题线索,切实减轻企业负担
  • 亚振家居半年内第二次筹划变更控制权:控股股东正与收购方商谈交易核心条款
  • 细说汇率 ⑬ 美元进入“全是坏消息”阶段
  • 西安雁塔区委书记王征拟任市领导班子副职,曾从浙江跨省调任陕西
  • 根据学习教育安排,上海市委中心组专题学习总书记力戒形式主义官僚主义重要论述