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

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的架构和工作原理,是优化集群性能和运行复杂任务的关键。

相关文章:

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

一、YARN的设计目标​​ ​​解耦资源管理与作业调度​​&#xff1a;将资源管理&#xff08;Resource Management&#xff09;和任务执行&#xff08;Task Execution&#xff09;分离&#xff0c;提升集群资源利用率。​​支持多种计算框架​​&#xff1a;不再局限于MapRedu…...

嵌入式学习笔记 - freeRTOS在程序开始在任务内创建任务的好处是什么

在FreeRTOS中&#xff0c;程序启动后优先在初始任务&#xff08;而非main()函数&#xff09;内创建其他任务是一种常见且推荐的设计模式&#xff0c;其主要优势包括以下几点&#xff1a; 以下来自deepseek的回答&#xff0c;很全面很正确&#xff1a; &#x1f527; 1. ‌避免…...

Ubuntu22.04 安装 CUDA12.8

1.下载CUDA 由于我装完 Ubuntu22.04 后就自动带了最新的显卡驱动&#xff0c;就没有再去配置驱动。 先查看驱动能支持的CUDA最高版本&#xff0c;这里显示可支持到12.8。 nvidia-smi在CUDA的 说明文档 可查看CUDA对应的驱动版本要求。 在 CUDA Toolkit Archive 查找需要的 …...

Android的uid~package~pid的关系

UID &#xff1a; Linux 系统级用户标识&#xff0c;Android 中每个应用安装时分配唯一 UID&#xff08;如 1000&#xff09;。 Package&#xff1a; Android 应用包名(例如android)&#xff0c;一个 UID 可关联多个 Package&#xff08;共享 UID 场景如android:sharedUserI…...

线段树刷题记录

一篇讲解很好的线段树博客&#xff1a;数据结构--线段树篇_数据结构线段树-CSDN博客 一、区间查询 无修改&#xff1a; &#xff08;一&#xff09;最值问题&#xff1a; 1.P1816 忠诚 - 洛谷 思路&#xff1a; 模板。 注意&#xff1a; 无。 代码&#xff1a; #include …...

20250530-C#知识:万物之父Object

C#知识&#xff1a;万物之父Object Object类&#xff08;即object&#xff09;是所有类的基类&#xff0c;这里面的方法还是需要好好了解一下。 1、Object类 是顶级父类&#xff0c;其他类默认都是Object类的子类&#xff08;自定义类也会默认继承Object类&#xff09;可以用O…...

多元素纳米颗粒:开启能源催化新纪元

在能源转型的浪潮中&#xff0c;纳米催化剂正成为推动能源技术突破的关键力量。多元素纳米颗粒&#xff08;Polyelemental Nanoparticles&#xff09;凭借其独特的元素协同效应&#xff0c;展现出在能源催化领域的巨大潜力。然而&#xff0c;合成这些复杂体系的纳米颗粒面临着诸…...

分布式锁优化:使用Lua脚本保证释放锁的原子性问题

分布式锁优化&#xff08;二&#xff09;&#xff1a;使用Lua脚本保证释放锁的原子性问题 &#x1f4bb;黑马视频链接&#xff1a;Lua脚本解决多条命令原子性问题 在上一章节视频实现了一个可用的Redis分布式锁&#xff0c;采用SET NX EX命令实现互斥和过期自动释放机制&…...

电脑wifi显示已禁用怎么点都无法启用

一、重启路由器与电脑 有时候&#xff0c;简单的重启可以解决很多小故障。试着先断开电源让路由器休息一会儿再接通&#xff1b;对于电脑&#xff0c;则可选择重启系统看看情况是否有改善。 二、检查驱动程序 无线网卡驱动程序的问题也是导致WiFi无法启用的常见原因之一。我…...

【FPGA开发】Ubuntu16.04环境下配置Vivado2018.3—附软件包

文章目录 环境介绍关键步骤记录安装虚拟机及镜像安装vivadolicense导入 环境介绍 vivado&#xff1a;2018.3 虚拟机&#xff1a;vmware 16 pro 镜像&#xff1a;Ubuntu16.04 64位 所有相关软件压缩包&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/fd2730b46b20 提取码…...

vue-seamless-scroll 结束从头开始,加延时后滚动

今天遇到一个大屏需求&#xff1a; 1️⃣初始进入页面停留5秒&#xff0c;然后开始滚动 2️⃣最后一条数据出现在最后一行时候暂停5秒&#xff0c;然后返回1️⃣ 依次循环&#xff0c;发现vue-seamless-scroll的方法 ScrollEnd是监测最后一条数据消失在第一行才回调&#xff…...

不同的数据库操作方式:MongoDB(NoSQL)和 MySQL/SQL

这两种写法分别使用了不同的数据库操作方式&#xff1a;第一种是 MongoDB&#xff08;NoSQL&#xff09; 的写法&#xff0c;第二种是 MySQL/SQL 的写法。我们来对比它们的区别&#xff0c;并给出优化建议。 1. MongoDB&#xff08;NoSQL&#xff09;写法 const user await d…...

0-EATSA-GNN:基于图节点分类师生机制的边缘感知和两阶段注意力增强图神经网络(code)

code:https://github.com/afofanah/EATSA-GNN. 文章目录 Abstract1. Introduction1.1.动态图场景1.2.EATSA-GNN框架的背景化2. Background2.1.GNN边缘感知挑战2.2.GNN的可解释性问题2.3.EATSA-GNN可解释性3. Related worksAbstract 图神经网络(GNNs)从根本上改变了我们处理和…...

大数据学习(124)-spark数据倾斜

&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一…...

配置前端控制器

一、DispatcherServlet 详解 在使用 Spring MVC 框架构建 Web 应用时&#xff0c;DispatcherServlet是整个请求处理流程的核心。本文将深入解析DispatcherServlet的作用、工作原理及其在 Spring MVC 架构中的关键地位。 1.DispatcherServlet 是什么&#xff1f; DispatcherS…...

lua注意事项

感觉是lua的一大坑啊&#xff0c;它还不如函数内部就局部变量呢 注意函数等内部&#xff0c;全部给加上local得了...

Git的三种合并方式

在 Gitee&#xff08;码云&#xff09;中合并分支主要有三种方式&#xff1a;​普通合并&#xff08;Merge Commit&#xff09;、压缩合并&#xff08;Squash Merge&#xff09;​和变基合并&#xff08;Rebase Merge&#xff09;​。每种方式适用于不同的场景&#xff0c;各有…...

从零到一:我的技术博客导航(持续更新)

作者&#xff1a;冰茶 最后更新&#xff1a;2025年6月3日 本文收录了我的C#编程学习心得与技术探索&#xff0c;将持续更新 前言 作为一名.NET开发者&#xff0c;C#语言的学习与探索一直是我技术成长的核心路径。本文集整理了我在C#学习过程中的思考与实践&#xff0c;希望能够…...

SpringBoot整合Flowable【08】- 前后端如何交互

引子 在第02篇中&#xff0c;我通过 Flowable-UI 绘制了一个简单的绩效流程&#xff0c;并在后续章节中基于这个流程演示了 Flowable 的各种API调用。然而&#xff0c;在实际业务场景中&#xff0c;如果要求前端将用户绘制的流程文件发送给后端再进行解析处理&#xff0c;这种…...

DM达梦数据库开启SQL日志记录功能

DM达梦数据库开启SQL日志记录功能 配置SQL日志&#xff08;非必须的配置步骤&#xff0c;与主备集群配置无关&#xff0c;如果没有需求可以跳过配置SQL日志&#xff09; sqllog.ini 配置文件用于SQL日志的配置&#xff0c;当且仅当 INI&#xff08;dm.ini&#xff09; 参数 SV…...

00 QEMU源码分析中文注释与架构讲解(v8.2.4版本)

QEMU-v8.2.4源码中文注释与架构讲解 文档会不定期更新 注释作者将狼才鲸创建日期2025-05-30更新日期2025-06-02 CSDN阅读地址&#xff1a;QEMU源码中文注释与架构讲解Gitee源码仓库地址&#xff1a;才鲸嵌入式/qemu 一、前言 其它参考教程的网址&#xff1a; QEMU 源码目录…...

【五模型时间序列预测对比】Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN

【五模型时间序列预测对比】Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN 目录 【五模型时间序列预测对比】Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Transformer-LSTM、Transformer、CNN-LSTM、LSTM、…...

深入了解MCP基础与架构

一、引言 在人工智能技术以指数级速度渗透各行业领域的今天&#xff0c;我们正站在一个关键的技术拐点。当ChatGPT月活突破亿级、Gemini Pro实现多模态实时交互、Claude 3.5 Sonnet突破百万上下文长度&#xff0c;这些里程碑事件背后&#xff0c;一个崭新的大门逐步打开&#…...

实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.13 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第5章析因设计引导5.7节思考题5.13 R语言解题。主要涉及方差分析&#xff0c;正态假设检验&#xff0c;残差分析&#xff0c;交互作用图。 dataframe<-data.frame( yc(36,18,30,39,20…...

怎么选择合适的高防IP

选择合适的高防IP需要综合考虑业务需求、防护能力、服务稳定性、成本效益等多方面因素。以下是从多个权威来源整理的关键要点&#xff0c;帮助您做出科学决策&#xff1a; 一、明确业务需求 业务类型与规模 网站/应用类&#xff1a;需支持HTTP/HTTPS协议&#xff0c;并配置域名…...

【java面试】MySQL篇

MySQL篇 一、总体结构二、优化&#xff08;一&#xff09;定位慢查询1.1 开源工具1.2Mysql自带的慢日志查询1.3 总结 &#xff08;二&#xff09;定位后优化2.1 优化2.2 总结 &#xff08;三&#xff09;索引3.1 索引3.2 索引底层数据结构——B树3.3 总结 &#xff08;四&#…...

贪心算法应用:欧拉路径(Fleury算法)详解

Java中的贪心算法应用&#xff1a;欧拉路径&#xff08;Fleury算法&#xff09;详解 一、欧拉路径与欧拉回路基础 1.1 基本概念 欧拉路径&#xff08;Eulerian Path&#xff09;是指在一个图中&#xff0c;经过图中每一条边且每一条边只经过一次的路径。如果这条路径的起点和…...

【算法设计与分析】实验——二维0-1背包问题(算法分析题:算法思路),独立任务最优调度问题(算法实现题:实验过程,描述,小结)

说明&#xff1a;博主是大学生&#xff0c;有一门课是算法设计与分析&#xff0c;这是博主记录课程实验报告的内容&#xff0c;题目是老师给的&#xff0c;其他内容和代码均为原创&#xff0c;可以参考学习&#xff0c;转载和搬运需评论吱声并注明出处哦。 要求&#xff1a;3-…...

P12592题解

题目传送门 思路 由于题目中说了可以任意交换两个字符的位置&#xff0c;我们只需要判断这个字符串是否满足回文串的条件即可。 代码&#xff1a; #include<bits/stdc.h> using namespace std; int a[30]; int main(){int T;cin>>T;while(T--){fill(a,a29,0);/…...

ffmpeg命令(二):分解与复用命令

分解&#xff08;Demuxing&#xff09; 提取视频流&#xff08;不含音频&#xff09; ffmpeg -i input.mp4 -an -vcodec copy video.h264-an&#xff1a;去掉音频 -vcodec copy&#xff1a;拷贝视频码流&#xff0c;不重新编码 提取音频流&#xff08;不含视频&#xff09…...