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

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);}}

http://www.jsqmd.com/news/279515/

相关文章:

  • MCP Server API KEY配置全攻略(从入门到生产级防护)
  • 基于51单片机智能手环老人防跌倒报警器设计加速度检测套件13(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 基于51单片机智能家居火灾报警器烟雾温度无线APP视频监控设计68(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • ADB 读取 trace文件
  • Z-Image-Turbo网络配置:外网访问UI界面的安全设置
  • 基于STM32单片机智能指南针电子罗盘方位显示野外探险设计套件23(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • unet image Face Fusion适合中小企业吗?低成本AI图像方案案例
  • 计算机Java毕设实战-基于springboot的药品商城药品管理、订单管理管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • (Dify + Milvus深度整合)构建企业级RAG系统的秘密武器
  • 复杂不确定环境下重大建设工程管理韧性评价(二维云模型)附Matlab代码
  • 给“基建狂魔”的数字化图纸:2026大型工程国企管理软件推荐,把超级工程装进手机里
  • 创新未发表!GA-PINN遗传算法优化的物理信息神经网络多变量回归预测附MATLAB代码
  • 大数据毕设选题推荐:基于django+大数据的大学生网络行为分析系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 电流源与偏置电路(二)简单偏置电路
  • Emotion2Vec+ Large内存溢出?轻量化部署优化实战案例
  • YOLOv11智能物流应用:包裹分拣系统部署
  • 多场景语音检测方案:FSMN-VAD支持麦克风与文件双模式
  • 120页精品PPT | 企业级业务架构和IT架构规划方案
  • 我愿称之为26年最详细的大模型学习路线!
  • 【Dify知识库优化必看】:自动 vs 手动分段,哪种文档处理方式效率提升300%?
  • 自动分段真的智能吗?,一线技术专家亲述Dify文档处理踩坑实录
  • 返乡大学生的创业答卷:灵智付带我扎根县域市场
  • Spring - AOP (面向切面编程)
  • Dify 413 Request Entity Too Large?立即检查这4个核心参数
  • 大数据毕设项目推荐-基于大数据的大学生网络行为分析系统基于django的大学生网络行为分析系统【附源码+文档,调试定制服务】
  • Redis:不仅仅是缓存,更是现代系统的数据心脏
  • 性价比之王!加压流体萃取仪价格便宜、质量靠谱厂家推荐
  • Dify对接飞书审批API全链路详解:从OAuth2鉴权到回调事件处理,98.7%成功率实测验证
  • 语音大数据处理新思路:FSMN-VAD批量检测自动化实践
  • Z-Image-Turbo适合内容创作者?图文搭配生成实战教程