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

YARN架构解析:大数据资源管理核心

一、YARN的设计目标​

  1. ​解耦资源管理与作业调度​​:将资源管理(Resource Management)和任务执行(Task Execution)分离,提升集群资源利用率。
  2. ​支持多种计算框架​​:不再局限于MapReduce,可运行Spark、Flink、Tez等分布式应用。
  3. ​高扩展性​​:支持数千节点和数万并发任务的超大规模集群。
  4. ​高容错性​​:自动处理节点故障和任务失败,保障作业可靠性。

​二、YARN的核心组件​

YARN采用​​主从架构(Master-Slave)​​,包含以下核心组件:

1. ​​ResourceManager(RM)​
  • ​角色​​:全局资源管理和调度器,负责协调集群资源分配。
  • ​主要功能​​:
    • 接收客户端提交的作业请求。
    • 监控NodeManager(NM)状态和资源使用情况。
    • 通过调度器(Scheduler)分配资源(如CPU、内存)给应用程序。
  • ​高可用(HA)​​:通过主备RM和ZooKeeper实现故障切换。
2. ​​NodeManager(NM)​
  • ​角色​​:单个节点上的资源代理,负责管理本节点的资源。
  • ​主要功能​​:
    • 向RM汇报节点资源状态(如可用CPU、内存)。
    • 启动和监控Container(资源容器)。
    • 清理Container占用的资源(如任务完成后释放内存)。
3. ​​ApplicationMaster(AM)​
  • ​角色​​:每个应用程序(如MapReduce作业、Spark作业)的专属协调者。
  • ​主要功能​​:
    • 向RM申请资源(Container)。
    • 与NM通信启动或停止Container。
    • 监控任务执行状态并处理失败任务。
4. ​​Container​
  • ​定义​​:YARN的资源抽象单位,封装了CPU、内存、磁盘、网络等资源。
  • ​特点​​:
    • 每个任务(如Map任务、Reduce任务)运行在一个Container中。
    • 资源分配可动态调整(需框架支持)。

​三、YARN的工作流程​

以下是一个作业(如MapReduce)在YARN上的执行流程:

  1. ​作业提交​

    • 客户端将作业(包含JAR包、配置等)提交到ResourceManager。
  2. ​启动ApplicationMaster​

    • RM为作业分配第一个Container,并在该Container中启动ApplicationMaster(AM)。
  3. ​资源申请​

    • AM向RM申请运行任务所需的资源(Container列表)。
  4. ​资源分配​

    • RM根据调度策略(如Capacity Scheduler)分配资源,返回可用的Container列表。
  5. ​任务执行​

    • AM与NM通信,在分配的Container中启动任务(如Map任务)。
    • AM监控任务状态,失败时重新申请资源。
  6. ​作业完成​

    • 所有任务完成后,AM向RM注销并释放资源。

​四、YARN的调度器(Scheduler)​

YARN支持多种调度策略,用户可根据需求配置:

1. ​​FIFO Scheduler​
  • ​特点​​:按作业提交顺序分配资源,简单但资源利用率低。
  • ​适用场景​​:小型集群或测试环境。
2. ​​Capacity Scheduler​
  • ​特点​​:将集群划分为多个队列,每个队列有固定资源配额,队列内使用FIFO。
  • ​优势​​:资源隔离性好,适合多租户共享集群。
  • ​典型使用​​:Hadoop默认调度器。
3. ​​Fair Scheduler​
  • ​特点​​:动态平衡资源分配,确保所有作业公平共享资源。
  • ​优势​​:适合短期交互式作业(如Spark SQL查询)。

​五、YARN的核心特性​

  1. ​多租户支持​​:不同用户或团队共享集群资源,互不干扰。
  2. ​弹性资源分配​​:Container资源可动态调整(需框架支持)。
  3. ​高容错性​​:
    • ApplicationMaster失败后,RM会重启AM并恢复任务。
    • NodeManager故障时,RM将该节点标记为不可用,任务在其他节点重新调度。
  4. ​资源隔离​​:通过Linux容器(Cgroups)或Docker实现CPU和内存隔离。

​六、YARN的配置与优化​

1. ​​关键配置参数​
  • ​ResourceManager​​:
    <property><name>yarn.scheduler.minimum-allocation-mb</name><value>1024</value>  <!-- 单个Container最小内存 -->
    </property>
    <property><name>yarn.scheduler.maximum-allocation-mb</name><value>8192</value>  <!-- 单个Container最大内存 -->
    </property>

  • ​NodeManager​​:
    <property><name>yarn.nodemanager.resource.memory-mb</name><value>16384</value>  <!-- 节点总可用内存 -->
    </property>
    <property><name>yarn.nodemanager.resource.cpu-vcores</name><value>8</value>       <!-- 节点总可用CPU核数 -->
    </property>

2. ​​优化建议​
  • ​避免资源碎片​​:合理设置Container的最小/最大资源。
  • ​启用资源隔离​​:使用Cgroups或Docker限制资源使用。
  • ​监控工具​​:通过YARN Web UI或工具(如Cloudera Manager、Ambari)监控资源利用率。

​七、YARN的适用场景​

  1. ​多计算框架混部​​:同时运行MapReduce、Spark、Flink等作业。
  2. ​长期服务​​:支持长时间运行的服务(如Apache HBase on YARN)。
  3. ​批处理与交互式查询​​:适合ETL任务和即席查询(通过资源动态分配)。

​八、YARN与MapReducev1的对比​

​特性​​MapReducev1(旧版)​​YARN(Hadoop 2.0+)​
资源管理由JobTracker集中管理资源与作业资源管理与作业调度分离
扩展性最多支持4000节点支持数万节点
多计算框架支持仅支持MapReduce支持Spark、Flink等多种框架
容错性JobTracker单点故障ResourceManager支持HA

​九、YARN常用命令​

# 提交作业到YARN
yarn jar hadoop-mapreduce-examples.jar wordcount /input /output# 查看运行中的作业列表
yarn application -list# 终止作业
yarn application -kill <application_id># 查看节点状态
yarn node -list# 查看队列资源使用情况
yarn queue -status <queue_name>

​十、YARN的优缺点​

​优点​​缺点​
支持多种计算框架,生态丰富配置复杂,需根据业务调整调度策略
资源利用率高,适合共享集群默认资源隔离较弱(需依赖Cgroups/Docker)
高扩展性和容错性对超低延迟任务支持有限(更适合批处理)

通过YARN,Hadoop从单一的批处理平台转变为通用的分布式计算资源管理平台,成为大数据生态系统的核心基石。理解YARN的架构和工作原理,是优化集群性能和运行复杂任务的关键。

http://www.xdnf.cn/news/9531.html

相关文章:

  • 【MYSQL】mysql单表亿级数据查询优化处理
  • 2021年认证杯SPSSPRO杯数学建模D题(第二阶段)停车的策略全过程文档及程序
  • 探寻黄金奶源带,悠纯乳业打造西北乳业新标杆
  • Spring AI框架快速入门
  • day12 leetcode-hot100-20(矩阵3)
  • 【Linux】网络(上)
  • Vue开发系列——如何使用Vue
  • 图像卷积OpenCV C/C++ 核心操作
  • 【DB2】ERRORCODE=-4499, SQLSTATE=08001
  • 【C++基础知识】匿名命名空间
  • mysql prepare statement
  • 如何查询服务器的端口号
  • 数据结构 -- 树相关面试题
  • SFTP工具类实现文件上传下载_
  • 关于ios点击分享自动复制到粘贴板的问题
  • CEH Practical 实战考试真题与答案
  • C++异步通信-future学习
  • maven项目编译时复制xml到classes目录方案
  • 服务器关机
  • 实验设计与分析(第6版,Montgomery)第4章随机化区组,拉丁方, 及有关设计4.5节思考题4.18~4.19 R语言解题
  • 【OSS】 前端如何直接上传到OSS 上返回https链接,如果做到OSS图片资源加密访问
  • [AI voiceFFmpeg windows系统下CUDA与cuDNN详细安装教程]
  • 记录一次session安装应用recyclerview更新数据的bug
  • Transformer架构详解:从Attention到ChatGPT
  • 数据脱敏后的测试方法
  • 宏的高级应用 ——一种 C 语言的元编程技巧(X-Macro)
  • Rust 学习笔记:关于迭代器的练习题
  • 用 Python 和 Rust 构建可微分的分子势能模型:深入解析 MOLPIPx 库
  • Rust: CString、CStr和String、str
  • 电商售后服务系统与其他系统集成:实现售后流程自动化