发布时间:2023-08-03 17:00
Yarn是一个通过的资源管理平台,可为各个计算框架提供资源的管理和调度。
其核心出发是为了分离资源管理与作业调度/监控,实现分离的做法是拥有一个全局的资源管理器(ResourceManager),
以及每个应用程序对应一个的应用管理器(ApplicationMater),应用程序由一个Job或者Job的又向无环图(DAG)组成。
ResourceManager 和 NodeManager(NM)组成了基本的数据计算框架。ResourceManager 协调集群的资源利用, 任何 Client 或者运行着的 applicatitonMaster 想要运行 Job 或者 Task 都得向 RM 申请一定的资 源。ApplicatonMaster 是一个框架特殊的库,对于 MapReduce 框架而言有它自己的 AM 实现, 用户也可以实现自己的 AM,在运行的时候,AM 会与 NM 一起来启动和监视 Tasks。
(1)ResourceManager
ResourceManager是基于应用程序对集群资源的需求进行调度的Yarn集群主控节点,负责协调和管理整个集群(所有NodeManager)的资源,响应用户提交的不同类型应用的解析,调度,监控等工作。ResourceManager会为每一个Application一个MRAPPMaster,并且MRAPPMaster分散在各个NodeManager节点
它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(ApplicationManager)
ResourceManager的主要职责:
1、处理客户端的请求
2、启动或者监控MRAPPMater
3、资源的分配与调度
4、监控NodeManager
(2)NodeManager
NodeManager是Yarn集群中真正的资源提供者,是真正执行应用程序的容器的提供者,监控应用程序的资源使用情况,并通过心跳机制向ResourceManager进行汇报以更新自己的健康状态。同时其也会监督Container的生命周期管理,监控每个Container的资源使用情况,追踪节点健康状况。
NodeManager的职责:
1、管理单个几点的资源
2、处理来自ResourceManager的命令
3、处理来自MRAppMaster的命令
(3)MRAppAMaster
1、MRAppMaster对应一个应用程序,向ResourceManager申请执行任务的资源容器,运行任务,监控整个任务的执行,跟踪整个任务的状态,处理任务失败以及异常情况
(4)Container
Container容器是一个抽象出来的逻辑资源单位,容器是由ResourceManager Scheduler服务动态分配的资源构成,它包括该节点上的一定量CPU,内存,磁盘,网络等信息,MapReduce程序的所有Task都是在一个容器里执行完成的,容器的大小可以动态调整。
(5)ApplicationsManager
应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交,与调度器协商启动AM、监控AM运行状态并在失败的时候重启。
(6)Scheduler
调度器根据应用程序的资源需求进行资源分配,不参与应用程序具体的执行和监控等工作,资源分配的单位是Container,调度器是一个可插拔的组件,用户可以根据自己的需求实现自己的调度器。(FIFO调度器,公平调度器,容量调度器)
1.客户端向Yarn中提交应用程序,其中包括MRAppMaster程序,启动MRAppMaster的命令,用户程序等。
2.ResourceManager为该程序分配一个Container,并与对应的NodeManager通讯,要求它这个Container中启动应用程序MRAppMaster
3.MRAppMaster向RM注册自己,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后将为各个任务申请资源,并监控它的运行状态,直到运行结束,重复4到7的步骤
4.MRAppMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源
5.一旦MRAppMater申请到资源后,便于对应的NodeManager通讯,要求它启动任务
6.NodeManager为任务设置好环境后,将任务启动命令写到一个脚本中,并且通过运行该脚本启动任务
7.各个任务通过RPC协议向MRAppMaster汇报自己的状态和进度,以让MRAppMaster随时掌握各个任务的运行状态,从而可以
在任务失败的时候重新启动任务
8、应用程序运行完成后,MRAppMaster向ResourceManager注销并关闭自己。
想转行数据方向,苦苦找不到方法?看这里,数据方向的完整知识体系送给你!
Vue3 京东到家项目实战第一篇(首页及登录功能开发) 进阶式掌握vue3完整知识体系
Qt实战案例(41)——利用QWinTaskbarButton和QWinTaskbarProgress类实现任务栏进度条的显示
PyTorch中 nn.Conv2d与nn.ConvTranspose2d函数的用法
Android Flutter利用CustomPaint绘制基本图形详解
绘制图形可以使用什么python数据库_地图数据库_地图绘制软件_可视化数据图_在线制作地图-帆软...
普渡大学工程学院计算机工程,普渡大学电气工程专业申请条件.pdf