yarn 主要由ResourceManager、NodeManager、ApplicationMaster、Container、Scheduler 等几个组件构成。
ResourceManager(RM)
RM是一个全局的资源管理器,负责整个系统的资源管理和分配。
它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Applications Manager,ASM),通俗讲是用于管理NodeManager节点的资源,包括cup、内存等。
Scheduler(调度器)
调度器根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序;在资源紧张的情况下,可以kill掉优先级低的,来运行优先级高的任务。
Applications Manager(应用程序管理器)new ApplicationMaster 监控所有job的任务运行结果的监控 --> 客户端
负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动它等。
ApplicationMaster(AM)job过程监控
ApplicationMaster 管理在YARN内运行的每个应用程序实例。每个应用程序对应一个ApplicationMaster。ApplicationMaster 负责协调来自 ResourceManager 的资源,并通过 NodeManager 监视容器的执行和资源使用(CPU、内存等的资源分配),通俗讲是管理发起的任务,随着任务创建而创建,任务的完成而结束。
NodeManager(NM)+ datanode 硬盘 CPU 内存
NM是每个节点上的资源和任务管理器,一方面,它会定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态;另一方面,它接收并处理来自AM的Container启动/停止等各种请求。
Container(重要) --> 资源接口 --> map reduce mapContainer reduceContainer spark --> sparkContainer
Container是YARN中的资源抽象,它封装了NodeManager节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。(队列 普通用户 VIP会员 -- 权重 权重高的一定是先执行)
yarn提交任务的过程
https://blog.csdn.net/weixin_40035337/article/details/108201178