JAVA面试——YARN

简介: JAVA面试——YARN

28.1.1. 概念

YARN 是一个资源管理、任务调度的框架,主要包含三大模块:ResourceManager(RM)、

NodeManager(NM)、ApplicationMaster(AM)。其中,ResourceManager 负责所有资

源的监控、分配和管理; ApplicationMaster 负责每一个具体应用程序的调度和协调;

NodeManager 负责每一个节点的维护。对于所有的 applications,RM 拥有绝对的控制权和对资

源的分配权。而每个 AM 则会和 RM 协商资源,同时和 NodeManager 通信来执行和监控 task。

几个模块之间的关系如图所示。

image.png

28.1.2. ResourceManager

1. ResourceManager 负责整个集群的资源管理和分配,是一个全局的资源管理系统。

2. NodeManager 以心跳的方式向 ResourceManager 汇报资源使用情况(目前主要是 CPU 和

内存的使用情况)。RM 只接受 NM 的资源回报信息,对于具体的资源处理则交给 NM 自己

处理。

3. YARN Scheduler 根据 application 的请求为其分配资源,不负责 application job 的监控、

追踪、运行状态反馈、启动等工作。

28.1.3. NodeManager

1. NodeManager 是每个节点上的资源和任务管理器,它是管理这台机器的代理,负责该节点

程序的运行,以及该节点资源的管理和监控。YARN集群每个节点都运行一个NodeManager。13/01/2022

Page 276 of 283

2. NodeManager 定时向 ResourceManager 汇报本节点资源(CPU、内存)的使用情况和

Container 的运行状态。当 ResourceManager 宕机时 NodeManager 自动连接 RM 备用节

点。

3. NodeManager 接收并处理来自 ApplicationMaster 的 Container 启动、停止等各种请求。

28.1.4. ApplicationMaster

用户提交的每个应用程序均包含一个 ApplicationMaster,它可以运行在 ResourceManager 以外

的机器上。

1. 负责与 RM 调度器协商以获取资源(用 Container 表示)。

2. 将得到的任务进一步分配给内部的任务(资源的二次分配)。

3. 与 NM 通信以启动/停止任务。

4. 监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。

5. 当前 YARN 自带了两个 ApplicationMaster 实现,一个是用于演示 AM 编写方法的实例程序

DistributedShell,它可以申请一定数目的 Container 以并行运行一个 Shell 命令或者 Shell

脚本;另一个是运行 MapReduce 应用程序的 AM—MRAppMaster。

注:RM 只负责监控 AM,并在 AM 运行失败时候启动它。RM 不负责 AM 内部任务的容错,任务

的容错由 AM 完成

image.png

1. client 向 RM 提交应用程序,其中包括启动该应用的 ApplicationMaster 的必须信息,例如

ApplicationMaster 程序、启动 ApplicationMaster 的命令、用户程序等。

2. ResourceManager 启动一个 container 用于运行 ApplicationMaster。

3. 启动中的ApplicationMaster向ResourceManager注册自己,启动成功后与RM保持心跳。

4. ApplicationMaster 向 ResourceManager 发送请求,申请相应数目的 container。

5. ResourceManager 返回 ApplicationMaster 的申请的 containers 信息。申请成功的

container,由 ApplicationMaster 进行初始化。container 的启动信息初始化后,AM 与对

应的 NodeManager 通信,要求 NM 启动 container。AM 与 NM 保持心跳,从而对 NM 上

运行的任务进行监控和管理。

6. container 运行期间,ApplicationMaster 对 container 进行监控。container 通过 RPC 协议

向对应的 AM 汇报自己的进度和状态等信息。

7. 应用运行期间,client 直接与 AM 通信获取应用的状态、进度更新等信息。

8. 应用运行结束后,ApplicationMaster 向 ResourceManager 注销自己,并允许属于它的

container 被收回。

目录
相关文章
|
11月前
|
缓存 Java 关系型数据库
2025 年最新华为 Java 面试题及答案,全方位打造面试宝典
Java面试高频考点与实践指南(150字摘要) 本文系统梳理了Java面试核心考点,包括Java基础(数据类型、面向对象特性、常用类使用)、并发编程(线程机制、锁原理、并发容器)、JVM(内存模型、GC算法、类加载机制)、Spring框架(IoC/AOP、Bean生命周期、事务管理)、数据库(MySQL引擎、事务隔离、索引优化)及分布式(CAP理论、ID生成、Redis缓存)。同时提供华为级实战代码,涵盖Spring Cloud Alibaba微服务、Sentinel限流、Seata分布式事务,以及完整的D
549 1
|
11月前
|
存储 安全 Java
常见 JAVA 集合面试题整理 自用版持续更新
这是一份详尽的Java集合面试题总结,涵盖ArrayList与LinkedList、HashMap与HashTable、HashSet与TreeSet的区别,以及ConcurrentHashMap的实现原理。内容从底层数据结构、性能特点到应用场景逐一剖析,并提供代码示例便于理解。此外,还介绍了如何遍历HashMap和HashTable。无论是初学者还是进阶开发者,都能从中受益。代码资源可从[链接](https://pan.quark.cn/s/14fcf913bae6)获取。
417 5
|
8月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
10月前
|
缓存 Java API
Java 面试实操指南与最新技术结合的实战攻略
本指南涵盖Java 17+新特性、Spring Boot 3微服务、响应式编程、容器化部署与数据缓存实操,结合代码案例解析高频面试技术点,助你掌握最新Java技术栈,提升实战能力,轻松应对Java中高级岗位面试。
626 0
|
10月前
|
Java 数据库连接 数据库
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
本文全面总结了Java核心知识点,涵盖基础语法、面向对象、集合框架、并发编程、网络编程及主流框架如Spring生态、MyBatis等,结合JVM原理与性能优化技巧,并通过一个学生信息管理系统的实战案例,帮助你快速掌握Java开发技能,适合Java学习与面试准备。
431 2
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
|
11月前
|
存储 安全 Java
2025 最新史上最全 Java 面试题独家整理带详细答案及解析
本文从Java基础、面向对象、多线程与并发等方面详细解析常见面试题及答案,并结合实际应用帮助理解。内容涵盖基本数据类型、自动装箱拆箱、String类区别,面向对象三大特性(封装、继承、多态),线程创建与安全问题解决方法,以及集合框架如ArrayList与LinkedList的对比和HashMap工作原理。适合准备面试或深入学习Java的开发者参考。附代码获取链接:[点此下载](https://pan.quark.cn/s/14fcf913bae6)。
5778 50
|
8月前
|
算法 Java
50道java基础面试题
50道java基础面试题
|
11月前
|
算法 架构师 Java
Java 开发岗及 java 架构师百度校招历年经典面试题汇总
以下是百度校招Java岗位面试题精选摘要(150字): Java开发岗重点关注集合类、并发和系统设计。HashMap线程安全可通过Collections.synchronizedMap()或ConcurrentHashMap实现,后者采用分段锁提升并发性能。负载均衡算法包括轮询、加权轮询和最少连接数,一致性哈希可均匀分布请求。Redis持久化有RDB(快照恢复快)和AOF(日志更安全)两种方式。架构师岗涉及JMM内存模型、happens-before原则和无锁数据结构(基于CAS)。
284 5