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

Yarn-概述

一、YARN 是什么?

YARN(Yet Another Resource Negotiator) 是 Apache Hadoop 生态系统中的核心组件,是一个 分布式资源管理和作业调度系统,主要用于协调集群中的计算资源(CPU、内存、磁盘、网络等),并为上层应用(如 MapReduce、Spark、Flink 等)提供统一的资源管理和调度服务。

  • 诞生背景:Hadoop 1.0 中,JobTracker 同时承担资源管理和作业调度任务,存在单点故障、扩展性差、资源利用率低等问题。YARN 作为 Hadoop 2.0 的核心改进,通过分离资源管理和作业逻辑,解决了上述痛点。
  • 核心定位:YARN 是大数据集群的 “操作系统”,负责资源的分配与调度,支持多种计算框架(批处理、实时计算、机器学习等)在同一集群上运行,实现资源共享与弹性扩展。
二、YARN 的核心架构与组件

YARN 采用 主从架构(Master-Slave),核心组件包括:

  1. ResourceManager(RM,资源管理器)

    • 全局管理者:负责整个集群的资源管理和调度,跟踪集群中所有节点(NodeManager)的资源使用情况(内存、CPU 等)。
    • 调度器(Scheduler):根据资源需求和调度策略(如容量调度、公平调度),为应用程序分配资源,不负责应用状态监控和故障恢复。
    • 应用管理器(ApplicationManager):管理所有应用程序的生命周期,包括应用提交、ApplicationMaster 的启动和容错。
  2. NodeManager(NM,节点管理器)

    • 节点管理者:运行在每个集群节点上,负责管理单个节点的资源(CPU、内存、磁盘、网络),监控容器(Container)的状态,并向 ResourceManager 汇报节点状态。
    • 容器(Container):YARN 中资源分配的基本单位,封装了一组资源(如 2GB 内存 + 4 个 CPU 核心),是应用程序运行的环境(可运行 Map/Reduce 任务、Spark 任务等)。
  3. ApplicationMaster(AM,应用主程序)

    • 应用协调者:每个应用程序(如一个 MapReduce 作业)对应一个 ApplicationMaster,负责与 ResourceManager 协商资源、与 NodeManager 交互启动 / 监控容器,以及处理作业的状态和容错。
    • 职责:申请资源、分配任务到容器、监控任务执行、处理任务失败并重启等。
  4. 作业提交客户端(Client)

    • 用户提交作业的入口,负责将作业请求发送给 ResourceManager,并查询作业状态。
三、YARN 的工作流程
  1. 作业提交:客户端将作业提交到 YARN,ResourceManager 分配第一个 Container 用于启动 ApplicationMaster。
  2. AM 启动:ApplicationMaster 在 Container 中启动,向 ResourceManager 注册并申请作业所需的资源(内存、CPU 等)。
  3. 资源分配:ResourceManager 根据调度策略,将可用资源以 Container 形式分配给 ApplicationMaster。
  4. 任务执行:ApplicationMaster 将任务分配到对应的 Container 中(由 NodeManager 启动和管理),任务开始执行并汇报进度。
  5. 作业完成:所有任务完成后,ApplicationMaster 向 ResourceManager 注销并释放资源,客户端获取作业结果。
四、YARN 的核心优势
  1. 资源统一管理与共享

    • 支持 MapReduce、Spark、Flink 等多种计算框架运行在同一集群,避免资源孤岛,提高集群利用率(如白天跑实时任务,夜间跑批处理任务)。
  2. 分离资源管理与作业调度

    • ResourceManager 专注于资源调度,ApplicationMaster 专注于作业逻辑,解决了 Hadoop 1.0 中 JobTracker 负载过重的问题,提升扩展性和稳定性。
  3. 灵活的调度策略

    • 支持多种调度器(如 容量调度器(Capacity Scheduler)公平调度器(Fair Scheduler)),可根据业务需求分配资源(如为关键应用预留资源)。
  4. 高可用性与容错

    • ResourceManager 支持主备(Active/Standby)模式,避免单点故障;NodeManager 和 ApplicationMaster 可自动重启失败的任务或容器。
  5. 弹性扩展

    • 集群可动态添加 / 移除节点,YARN 自动重新分配资源,适应业务规模变化。
五、YARN 的应用场景
  1. 多框架统一部署

    • 大数据集群中同时运行批处理(MapReduce)、实时计算(Flink)、交互式查询(Hive on Spark)等任务,共享硬件资源。
  2. 资源隔离与优先级管理

    • 通过调度器为不同部门、不同应用分配资源配额,确保关键任务优先执行(如实时风控系统优先于离线报表任务)。
  3. 大规模分布式计算

    • 支持处理 PB 级数据的分布式作业,如日志分析、数据清洗、机器学习模型训练(如 TensorFlow on YARN)。
六、YARN 与其他组件的关系
  • HDFS:YARN 的数据存储层,作业输入输出数据通常存储在 HDFS 中。
  • 计算框架:MapReduce、Spark、Flink 等作为 YARN 的 “应用” 运行,通过 YARN 申请资源,无需关心底层集群细节。
  • 生态整合:YARN 是 Hadoop 生态的核心枢纽,支撑 Hive、Pig、Flink 等上层工具的运行,推动大数据平台的统一化管理。
http://www.xdnf.cn/news/417295.html

相关文章:

  • 用自写的jQuery库+Ajax实现了省市联动
  • 专题三:穷举vs暴搜vs深搜vs回溯vs剪枝(全排列)决策树与递归实现详解
  • 实现 STM32 PWM 输出:原理、配置与应用详解
  • 美学心得(第二百七十六集) 罗国正
  • RDD案例数据清洗
  • 【SpringBoot】从零开始全面解析Spring MVC (一)
  • 飞书配置表数据同步到数据库中
  • 《微机原理与接口技术》第 6 章 半导体存储器
  • 【Python 中文编码】
  • Jupyter Notebook 配置学习笔记
  • Spark缓存-cache
  • 【github】主页显示star和fork
  • Unity3d 打包安卓平台(Android apk)报错Gradle build failed解决方法
  • 多模态RAG与LlamaIndex——1.deepresearch调研
  • STM32 HAL驱动程序 内部Flash
  • ansible进阶版01
  • FFmpeg在Android开发中的核心价值是什么?
  • RAG之大规模解析 PDF 文档全流程实战
  • 开源免费无广告专注PDF编辑、修复和管理工具 办公学术 救星工具
  • 服务器相关
  • Java Web 应用安全响应头配置全解析:从单体到微服务网关的实践
  • Vue 2 项目中配置 Tailwind CSS 和 Font Awesome 的最佳实践,加 daisyUI 安装
  • 存算一体芯片对传统GPU架构的挑战:在GNN训练中的颠覆性实验
  • w~大模型~合集30
  • 【后端】SpringBoot用CORS解决无法跨域访问的问题
  • Go 语言即时通讯系统开发日志-day1:从简单消息收发 Demo 起步
  • Vue使用scale方法实现响应式自适应大屏缩放通用组件详解(附完整代码)
  • cursor Too many报错 显示锁机器码怎么办?也就是Cursor的
  • 101alpha---第10
  • 各类型和字节数组互相转换