news 2026/4/23 13:50:42

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 9:49:19

基于51单片机智能手环老人防跌倒报警器设计加速度检测套件13(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于51单片机智能手环老人防跌倒报警器设计加速度检测套件13(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码 51单片机老人防跌倒蜂鸣器报警系统加速度检测13产品功能描述: 本系统由STC89C52单片机、ADXL345重力加速…

作者头像 李华
网站建设 2026/4/16 8:41:28

【课程设计/毕业设计】基于springboot的药品商城管理系统基于web的药品商城管理系统【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/16 10:06:38

基于U-Net的医学影像心脏分割系统

基于U-Net的医学影像心脏分割系统 目录 项目概述 数据集与预处理 模型架构与原理 训练与评估 系统实现 系统功能 总结与展望 1. 项目概述 1.1 项目简介 本项目是一个基于深度学习的医学影像心脏分割系统,采用U-Net架构实现心脏左心房的自动分割。系统集成了完整的深度学习训…

作者头像 李华
网站建设 2026/4/17 13:34:05

厦门AI实战营侧记:当教育者开始“铸造”自己的数字分身

在厦门举办的AI智能体实战训练营,更像一个充满未来感的“铸造车间”。但与铸造金属不同,这里的每一位教育者、知识创作者,都在导师的指引下,尝试“铸造”一个独一无二的资产——属于自己专业能力的“数字分身”。这个过程&#xf…

作者头像 李华
网站建设 2026/4/17 21:43:33

CosyVoice2-0.5B值得入手吗?开源语音合成模型实操测评指南

CosyVoice2-0.5B值得入手吗?开源语音合成模型实操测评指南 1. 引言:3秒克隆声音,真的能做到吗? 你有没有想过,只需要一段几秒钟的录音,就能让AI完全复刻你的声音?还能用这个声音说英文、日文&…

作者头像 李华
网站建设 2026/4/18 12:40:56

【拯救HMI】HMI视觉革命:为什么“高性能HMI”是工业设计的未来?

一、工业界面的审美变迁:从“拟物”到“高性能”在过去的十年里,HMI(人机界面)设计经历了一场深刻的变革。早期的HMI设计往往追求“逼真”,设计师喜欢使用大量的3D管道、旋转的泵体动画和鲜艳的渐变色背景,…

作者头像 李华