news 2026/4/15 11:00:48

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/2 11:27:06

PyTorch镜像部署成本分析:节省人力时间的价值测算

PyTorch镜像部署成本分析:节省人力时间的价值测算 1. 为什么部署一个PyTorch环境要花半天?——真实痛点还原 你有没有过这样的经历: 刚拿到一台新GPU服务器,兴致勃勃想跑通第一个模型,结果卡在了环境配置上&#xff…

作者头像 李华
网站建设 2026/4/8 9:58:06

Z-Image-Turbo本地部署教程:7860端口访问失败解决方案

Z-Image-Turbo本地部署教程:7860端口访问失败解决方案 Z-Image-Turbo 是一款功能强大的图像生成模型,其配套的 UI 界面让使用者无需编写代码也能轻松完成高质量图像的生成。界面设计简洁直观,包含参数调节区、预览窗口和操作按钮&#xff0c…

作者头像 李华
网站建设 2026/4/12 11:15:15

企业级AI应用提速关键,2026年Dify平台5个必装核心插件全解析

第一章:Dify插件市场2026年度全景概览 2026年,Dify插件市场迎来爆发式增长,成为低代码与AI集成生态的核心枢纽。平台注册开发者突破12万,上架插件数量同比增长340%,覆盖自动化、数据分析、自然语言处理等多个前沿领域。…

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

Linux 内核 3.10 的 cgroup v2 支持情况分析

🔍 内核 3.10 的 cgroup v2 支持情况 📊 版本支持分析 内核版本与 cgroup v2 时间线 内核版本 cgroup v2 支持情况 ───────────────────────────────── 3.10 ❌ 完全没有支持(2013年发布&…

作者头像 李华
网站建设 2026/4/14 20:57:54

AI Agent无法读写本地文件?MCP协议的这5个特性你必须掌握

第一章:AI Agent本地文件操作的挑战与MCP协议的兴起 在现代智能系统中,AI Agent对本地文件的操作能力是实现复杂任务自动化的关键环节。然而,传统方式下Agent常受限于权限隔离、路径不可知、跨平台兼容性差等问题,导致读取配置、写…

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

YOLOv11智能物流应用:包裹分拣系统部署

YOLOv11智能物流应用:包裹分拣系统部署 1. YOLOv11:更快更准的视觉识别新选择 你可能已经熟悉YOLO系列在目标检测领域的强大表现,而YOLOv11正是这一经典算法的最新演进。它不是简单的版本号升级,而是在架构设计、推理速度和检测…

作者头像 李华