news 2026/4/18 7:47:20

YARN(Yet Another Resource Negotiator)是 Hadoop 生态系统的核心资源调度框架,负责集群资源管理和任务调度

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
YARN(Yet Another Resource Negotiator)是 Hadoop 生态系统的核心资源调度框架,负责集群资源管理和任务调度

YARN 概述

YARN(Yet Another Resource Negotiator)是 Hadoop 生态系统的核心资源调度框架,负责集群资源管理和任务调度。它将资源管理与作业调度分离,提高了 Hadoop 的扩展性和灵活性,支持多计算框架(如 MapReduce、Spark、Flink)运行在同一集群上。


YARN 核心组件

ResourceManager (RM)

  • 全局资源管理器,负责集群资源分配与调度。
  • 包含两个子组件:
    • Scheduler:纯调度器,根据策略(如 FIFO、Capacity、Fair)分配资源。
    • ApplicationsManager:管理应用程序的生命周期(提交、启动、监控)。

NodeManager (NM)

  • 每个节点上的代理,负责管理单个节点的资源(CPU、内存)和容器(Container)。
  • 向 RM 汇报资源使用情况,并执行 RM 分配的容器任务。

ApplicationMaster (AM)

  • 每个应用独有的组件,负责向 RM 申请资源,并与 NM 协作执行任务。
  • 框架特定(如 MapReduce 的 MRAppMaster)。

Container

  • 资源抽象单元,封装了节点的 CPU、内存等资源,供任务运行使用。

YARN 工作流程

  1. 应用提交

    • 客户端提交应用至 RM,RM 启动对应的 AM。
  2. 资源申请

    • AM 向 RM 注册,并通过心跳机制动态申请资源(Container)。
  3. 任务分配

    • RM 的 Scheduler 分配资源,AM 与 NM 通信启动 Container 运行任务。
  4. 监控与完成

    • AM 监控任务状态,任务完成后向 RM 注销并释放资源。

YARN 调度器类型

FIFO Scheduler

  • 先进先出队列,简单但资源利用率低,不适合多租户场景。

Capacity Scheduler

  • 分层队列划分,每个队列分配固定资源比例,支持多租户和资源隔离。

Fair Scheduler

  • 动态平衡资源分配,根据需求动态调整队列资源,适合弹性负载。

YARN 配置与优化

关键配置参数

  • yarn.scheduler.minimum-allocation-mb:单个容器最小内存(默认 1024MB)。
  • yarn.scheduler.maximum-allocation-mb:单个容器最大内存(取决于节点资源)。
  • yarn.nodemanager.resource.memory-mb:NM 管理的总可用内存。

优化建议

  • 避免过量分配内存,防止频繁的 OOM 导致任务失败。
  • 根据负载选择合适的调度器(如生产环境常用 Capacity Scheduler)。
  • 启用资源隔离(如 Linux 的 Cgroups)避免资源冲突。

YARN 高可用性

  • RM HA:通过 ZooKeeper 实现主备 RM 切换,避免单点故障。
  • NM 恢复:NM 重启后重新注册,恢复正在运行的容器。

YARN 与生态集成

  • Spark on YARN:通过--master yarn提交 Spark 作业,YARN 管理资源。
  • Flink on YARN:支持 Session 模式和 Per-Job 模式部署。

通过合理配置和调度策略,YARN 能够高效支持大规模分布式计算任务。

YARN(Yet Another Resource Negotiator)是 Hadoop 2.0 引入的核心组件,旨在将资源管理与任务调度从 MapReduce 框架中解耦,从而支持更多类型的分布式计算模型。YARN 主要由以下几个关键组件构成:

  1. ResourceManager(RM):全局的资源调度器,负责整个集群的资源分配和管理。它运行在主节点上,包含两个主要子组件:

    • Scheduler(调度器):根据容量、队列等限制条件(如内存、CPU 等)将资源分配给各个应用程序,但不负责监控或跟踪任务执行状态。
    • ApplicationsManager(ASM):处理客户端提交的应用程序,启动 ApplicationMaster 并在失败时重启。
  2. NodeManager(NM):运行在每个从节点上的代理,负责单个节点的资源管理(如 CPU、内存、磁盘等),并定期向 ResourceManager 汇报资源使用情况。它还负责启动和监控容器(Container)。

  3. ApplicationMaster(AM):每个应用程序(如 MapReduce 作业、Spark 作业)都有一个对应的 ApplicationMaster,它负责与 ResourceManager 协商资源,并与 NodeManager 协作来启动和监控任务。

  4. Container:YARN 中的资源抽象单位,封装了一定数量的资源(如 CPU 核心数、内存),用于运行任务或 ApplicationMaster。

YARN 的工作流程大致如下:

  • 用户提交应用程序到 ResourceManager。
  • ResourceManager 分配一个 Container 来启动该应用的 ApplicationMaster。
  • ApplicationMaster 向 ResourceManager 申请更多 Container 来并行执行任务。
  • ResourceManager 通过 Scheduler 分配资源,NodeManager 在各自的节点上启动 Container 执行任务。
  • ApplicationMaster 监控任务执行,完成后再向 ResourceManager 注销并释放资源。

YARN 的优势包括:

  • 支持多租户和多种计算框架(如 MapReduce、Spark、Flink、Hive on Tez 等)。
  • 提高集群资源利用率。
  • 实现更好的可扩展性和灵活性。
// 示例:YARN 客户端提交应用的基本逻辑(简化)publicclassYarnClientExample{publicstaticvoidmain(String[]args)throwsException{YarnClientyarnClient=YarnClient.createYarnClient();yarnClient.init(newConfiguration());yarnClient.start();// 创建应用YarnClientApplicationapp=yarnClient.createApplication();ApplicationSubmissionContextappContext=app.getApplicationSubmissionContext();// 设置应用名称、AM 信息、资源需求等appContext.setApplicationName("DemoApp");appContext.setAMContainerSpec(/* 启动AM的上下文 */);appContext.setResource(Resource.newInstance(1024,1));// 1GB 内存,1核// 提交应用yarnClient.submitApplication(appContext);}}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 6:28:08

灰狼优化算法(GWO)改进LightGBM - 光伏功率预测附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子书和数学建模资料 &#…

作者头像 李华
网站建设 2026/4/18 4:04:51

Unsloth开源框架部署教程:快速上手Gemma/LLaMA微调详细步骤

Unsloth开源框架部署教程:快速上手Gemma/LLaMA微调详细步骤 你是否还在为大模型微调时显存占用高、训练速度慢而烦恼?有没有一种方法能让 LLaMA、Gemma 这类主流大模型的微调效率提升一倍,同时把 GPU 显存消耗砍掉七成?答案是&am…

作者头像 李华
网站建设 2026/4/18 3:34:48

从“工具应用”到“时代思维”:在AI实战营,看见教育未来的模样

当“AI智能体实战训练营”的会场大门开启,涌入的不仅是一批求知者,更是一种清晰可感的时代脉搏。我们观察到,参与者们并非带着学习“新工具”的简单心态而来,他们的眼神中,透露出的是对重塑自身能力边界、甚至重构所在…

作者头像 李华
网站建设 2026/4/17 19:36:26

【拯救HMI】告别“报警洪水”:HMI报警管理系统的设计哲学

一、报警系统:工业安全的最后一道防线如果说HMI是工业设备的“脸”,那么报警系统就是它的“神经系统”。在石油天然气、电力、制药等连续生产行业,报警管理的优劣直接关乎生产安全甚至人员生命。 然而,在实际项目中,我…

作者头像 李华
网站建设 2026/4/18 3:27:16

FSMN VAD实战案例:法庭庭审记录自动化处理

FSMN VAD实战案例:法庭庭审记录自动化处理 1. 引言:为什么法庭场景需要语音活动检测? 在司法实践中,一场完整的庭审往往持续数小时,录音文件动辄上G。传统的人工转录方式不仅耗时耗力,还容易遗漏关键发言…

作者头像 李华
网站建设 2026/4/18 3:30:59

【稀缺实战经验】:用Dify Iteration节点实现自动化批处理(附案例)

第一章:Dify工作流中Iteration节点的核心作用 在Dify平台的工作流设计中,Iteration节点承担着循环处理数据的关键职责。它允许开发者对一组输入数据进行逐项遍历,并在每次迭代中执行特定的逻辑操作,从而实现批量处理、动态控制和复…

作者头像 李华