原创 | 9张图详解Yarn的工作机制,惊艳阿里面试官

简介: 原创 | 9张图详解Yarn的工作机制,惊艳阿里面试官

我们知道 YARN 是 Hadoop 资源管理器,无论是 MapReduce 应用还是 Spark 应用,应该都会用到 Yarn。我们学习 Yarn 不仅为了应对工作,面试中也是一个高频考点,无论是阿里、字节还是美团等一线大厂的一面,都喜欢问这个知识点。


今天我们就来聊聊 Yarn 的组成以及工作流程:


先介绍几个角色


image.png


ResourceManager

一个集群只有一个 RM,它是 YARN 的总指挥,负责协调集群上的计算资源,它有以下两个组件:

  • ApplicationsManager:这个不是 ApplicationMaster,注意区分。它会接受 Job 的提交请求,调度 Container 用于启动 ApplicationMaster,以及负责 ApplicationMaster 的失败重启。
  • Scheduler:调度器纯粹为应用程序分配资源,它不会监控应用的状态,这里的调度就是基于 Container 这个抽象的资源容器,包含内存、CPU、磁盘、网络等。


NodeManager一个集群中有多个 NodeManager,它负责启动 Container,监控 Container 的资源使用情况(cpu、内存、磁盘、网络),并将这些信息汇报给 RM。一个 NodeManager 上可以有多个 Container。

ContainerContainer 是一组硬件资源的抽象,包含 CPU、内存、磁盘、网络等,所有的 Job 都是在 Container 中运行;

ApplicationMaster与 RM 协商资源,并与 NodeManager 一起监控任务,ApplicationMaster 和 Job 一样,都是运行在 Container 中。

下面我们详细了解下一个任务是怎么提交到 Yarn 中运行的。


image.png


第 1 步:Client 向 RM 发起任务请求:「RM,我要执行一个任务」


image.png


第 2 步:RM 给 Client 返回 Application ID 等信息:「好的,给你分配一个 Application ID」



image.png


第 3 步:Client 根据返回的信息,检查作业的输入输出目录是否正确、计算作业输入分片是否正常,将运行作业需要的资源(作业 Jar 文件、配置文件、输入分片)复制到以 Application ID 命名的 HDFS 目录中。



image.png


第 4 步:Client 向 RM 正式提交作业:「我都准备好了,执行任务吧」



image.png


第 5 步:RM 将请求信息传递给自己的小弟 Scheduler:「Scheduler 老弟,你来分配个 Container」

第 6 步:Scheduler 分配 Container,用于启动 ApplicationMaster:「好的,这个 Container 就是 0 号选手」第 7 步:ApplicationsManager 与指定的 NodeManager 通信,要求在 Container 中启动 ApplicationMaster。


image.png


第 8 步:ApplicationMaster 初始化任务并向 RM 申请所需要的资源:「RM 大哥,给我资源运行任务」



image.png


第 9 步:RM 返回 ApplicationMaster 申请的资源:「给你 1、2  两个 NodeManager」

第 10 步:ApplicationMaster 与对应的 NodeManager 通信,申请 Container 启动任务「NodeManager 大哥,给我启动 Container 运行这个任务」


image.png


第 11 步:Container 中的应用程序会先将需要的计算资源从 HDFS 下载到本地,再启动任务:「都给我跑起来」

第 12 步:运行过程中,任务会将状态和进度报告给 ApplicationMaster,Client 会轮询 ApplicationMaster 获取状态。第 13 步:运行完成后,Container 会注销掉,也就是把资源归还给系统,ApplicationMaster 向 RM 注销自己。

如果你已经坚持看到这里了,可以回到文章开头再看看 Yarn 的几个角色解释,加深理解。

你还想峰哥讲哪方面的知识点,欢迎留言~

目录
打赏
0
0
0
0
8
分享
相关文章
阿里面试:每天新增100w订单,如何的分库分表?这份答案让我当场拿了offer
例如,在一个有 10 个节点的系统中,增加一个新节点,只会影响到该新节点在哈希环上相邻的部分数据,其他大部分数据仍然可以保持在原节点,大大减少了数据迁移的工作量和对系统的影响。狠狠卷,实现 “offer自由” 很容易的, 前段时间一个武汉的跟着尼恩卷了2年的小伙伴, 在极度严寒/痛苦被裁的环境下, offer拿到手软, 实现真正的 “offer自由”。在 3 - 5 年的中期阶段,随着业务的稳定发展和市场份额的进一步扩大,订单数据的增长速度可能会有所放缓,但仍然会保持在每年 20% - 30% 的水平。
阿里面试:每天新增100w订单,如何的分库分表?这份答案让我当场拿了offer
阿里面试:5000qps访问一个500ms的接口,如何设计线程池的核心线程数、最大线程数? 需要多少台机器?
本文由40岁老架构师尼恩撰写,针对一线互联网企业的高频面试题“如何确定系统的最佳线程数”进行系统化梳理。文章详细介绍了线程池设计的三个核心步骤:理论预估、压测验证和监控调整,并结合实际案例(5000qps、500ms响应时间、4核8G机器)给出具体参数设置建议。此外,还提供了《尼恩Java面试宝典PDF》等资源,帮助读者提升技术能力,顺利通过大厂面试。关注【技术自由圈】公众号,回复“领电子书”获取更多学习资料。
阿里面试:DDD 落地,遇到哪些 “拦路虎”?如何破局?
为每个子领域定义限界上下文(bounded context),限界上下文是一个清晰定义了领域模型的边界的范围。在限界上下文内,领域模型的概念是一致的,但不同限界上下文之间可以有不同的模型和语言。界限上下文,基本可以对应到 落地层面的 微服务。这就是 DDD 建模和 微服务架构, 能够成为孪生兄弟、 天然统一的原因。具体的方法论和落地实操,请参考 《第34章视频 DDD学习圣经》DDD 战略设计的第一步就是统一语言,也叫通用语言(UBIQUITOUS LANGUAGE),用于定义上下文。
阿里面试:DDD 落地,遇到哪些 “拦路虎”?如何破局?
阿里面试:为什么要索引?什么是MySQL索引?底层结构是什么?
尼恩是一位资深架构师,他在自己的读者交流群中分享了关于MySQL索引的重要知识点。索引是帮助MySQL高效获取数据的数据结构,主要作用包括显著提升查询速度、降低磁盘I/O次数、优化排序与分组操作以及提升复杂查询的性能。MySQL支持多种索引类型,如主键索引、唯一索引、普通索引、全文索引和空间数据索引。索引的底层数据结构主要是B+树,它能够有效支持范围查询和顺序遍历,同时保持高效的插入、删除和查找性能。尼恩还强调了索引的优缺点,并提供了多个面试题及其解答,帮助读者在面试中脱颖而出。相关资料可在公众号【技术自由圈】获取。
阿里面试:10WQPS高并发,怎么限流?这份答案让我当场拿了offer
在 Nacos 的配置管理界面或通过 Nacos 的 API,创建一个名为(与配置文件中 dataId 一致)的配置项,用于存储 Sentinel 的流量控制规则。上述规则表示对名为的资源进行流量控制,QPS 阈值为 10。resource:要保护的资源名称。limitApp:来源应用,default表示所有应用。grade:限流阈值类型,1 表示 QPS 限流,0 表示线程数限流。count:限流阈值。strategy:流控模式,0 为直接模式,1 为关联模式,2 为链路模式。
阿里面试:10WQPS高并发,怎么限流?这份答案让我当场拿了offer
AI+树莓派=阿里P8技术专家。模拟面试、学技术真的太香了 | 手把手教学
本课程由阿里P8技术专家分享,介绍如何使用树莓派和阿里云服务构建AI面试助手。通过模拟面试场景,讲解了Java中`==`与`equals`的区别,并演示了从硬件搭建、语音识别、AI Agent配置到代码实现的完整流程。项目利用树莓派作为核心,结合阿里云的实时语音识别、AI Agent和文字转语音服务,实现了一个能够回答面试问题的智能玩偶。课程展示了AI应用的简易构建过程,适合初学者学习和实践。
125 22
阿里面试:聊聊 CAP 定理?哪些中间件是AP?为什么?
本文深入探讨了分布式系统中的“不可能三角”——CAP定理,即一致性(C)、可用性(A)和分区容错性(P)三者无法兼得。通过实例分析了不同场景下如何权衡CAP,并介绍了几种典型分布式中间件的CAP策略,强调了理解CAP定理对于架构设计的重要性。
158 4
阿里面试:亿级 redis 排行榜,如何设计?
本文由40岁老架构师尼恩撰写,针对近期读者在一线互联网企业面试中遇到的高频面试题进行系统化梳理,如使用ZSET排序统计、亿级用户排行榜设计等。文章详细介绍了Redis的四大统计(基数统计、二值统计、排序统计、聚合统计)原理和应用场景,重点讲解了Redis有序集合(Sorted Set)的使用方法和命令,以及如何设计社交点赞系统和游戏玩家排行榜。此外,还探讨了超高并发下Redis热key分治原理、亿级用户排行榜的范围分片设计、Redis Cluster集群持久化方式等内容。文章最后提供了大量面试真题和解决方案,帮助读者提升技术实力,顺利通过面试。
阿里面试:1000万级大表, 如何 加索引?
45岁老架构师尼恩在其读者交流群中分享了如何在生产环境中给大表加索引的方法。文章详细介绍了两种索引构建方式:在线模式(Online DDL)和离线模式(Offline DDL),并深入探讨了 MySQL 5.6.7 之前的“影子策略”和 pt-online-schema-change 方案,以及 MySQL 5.6.7 之后的内部 Online DDL 特性。通过这些方法,可以有效地减少 DDL 操作对业务的影响,确保数据的一致性和完整性。尼恩还提供了大量面试题和解决方案,帮助读者在面试中充分展示技术实力。
阿里面试:canal+MQ,会有乱序的问题吗?
本文详细探讨了在阿里面试中常见的问题——“canal+MQ,会有乱序的问题吗?”以及如何保证RocketMQ消息有序。文章首先介绍了消息有序的基本概念,包括全局有序和局部有序,并分析了RocketMQ中实现消息有序的方法。接着,针对canal+MQ的场景,讨论了如何通过配置`canal.mq.partitionsNum`和`canal.mq.partitionHash`来保证数据同步的有序性。最后,提供了多个与MQ相关的面试题及解决方案,帮助读者更好地准备面试,提升技术水平。
阿里面试:canal+MQ,会有乱序的问题吗?

热门文章

最新文章