首页 > 其他分享 >YARN基本架构

YARN基本架构

时间:2023-02-11 22:32:20浏览次数:30  
标签:基本 Container ResourceManager 调度 应用程序 YARN 架构 资源

YARN总体上采用master/slave架构,其中,ResourceManager为master,NodeManager为slave, ResourceManager负责对各个NodeManager上的资源进行统一管理和调度。当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManager申请资源,并要求NodeManager启动可以占用一定资源的任务,由于不同的ApplicationMaster被分布到不同的节点上,因此它们之间不会相互影响。

YARN基本架构_YARN

1、ResourceManager(RM)

RM是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成:调度器(Scheduler)和应用管理器(Applications Manager, ASM)。

  • 调度器:调度器主要功能是根据资源容量,队列等方面的限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个应用程序。YARN中的调度器是一个“纯调度器”,它不再从事任何与具体应用程序相关的工作,比如不负责监控或者跟踪应用的执行状态等,也不负责重新启动因应用执行失败或者硬件故障而产生的失败任务,这些均交由应用程序相关的ApplicationMaster完成。调度器仅根据各个应用程序的资源需求进行资源分配,而资源分配单位用一个抽象概念“资源容器”(Resource Container,简称Container)表示,Container是一个动态资源分配单位,它将内存、CPU、磁盘、网络等资源封装在一起,从而限定每个任务使用的资源量。在YARN中,资源调度器是一个可插拔的组件,用户可根据自己的需要设计新的调度器,YARN提供了多种直接可用的调度器,比如Fair Scheduler和Capacity Scheduler。
  • 应用程序管理器:应用程序管理器负责管理整个系统中的所有应用程序,包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动它等。

为了避免单个ResourceManager出现单点故障导致整个集群不可用,YARN引入主备ResourceManager实现了HA,当Active ResourceManager出现故障时,Standby ResourceManager会通过ZooKeeper选举,自动提升为Active ResourceManager。

2、ApplicationMaster(AM)

用户提交的每个应用程序均包含一个独立的AM,其主要功能包括:

  • 与RM调度器协商以获取资源(用Container表示)。
  • 将得到的资源进一步分配给内部的任务。
  • 与NM通信以启动/停止任务。
  • 监控所有任务的运行状态,并在任务运行失败时重新为任务申请资源以重启任务。

当前YARN源代码中自带了两个AM实现,一个是用于演示AM编写方法的实例程序distributedshell,它可以申请一定数目的Container运行一个shell命令或者shell脚本,另一个是运行MapReduce应用程序的AM——MRAppMaster。很多开源的计算框架和服务为了能够运行在YARN上,也提供了自己的ApplicationMaster实现,包括Open MPI、Spark、HBase、Impala等。

3、NodeManager(NM)

NM是每个节点上的资源管理器,一方面,它会定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态,另一方面,它接收并处理来自AM的任务启动/停止等各种请求。在一个集群中,NodeManager通常存在多个,由于YARN内置了容错机制,单个NodeManager的故障不会对集群中的应用程序运行产生严重影响。

4、Container

Container是YARN中的基本资源分配单位,是对应用程序运行环境的抽象,并为应用程序提供资源隔离环境。它封装了多维度的资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。YARN中每个任务均会对应一个Container,且该任务只能使用该Container中描述的资源。需要注意的是,Container不同于MRv1中的slot,它是一个动态资源划分单位,是根据应用程序的需求动态生成的。Container最终是由ContainerExecutor启动和运行的,YARN提供了三种可选的ContainerExecutor:

  • DefaultContainerExecutor:默认ContainerExecutor实现,直接以进程方式启动Container,不提供任何隔离机制和安全机制,任何应用程序最终均是以YARN服务启动者的身份运行的。
  • LinuxContainerExecutor:提供了安全和Cgroups隔离的ContainerExecutor,它以应用程序提交者的身份运行Container,且使用Cgroups为Container提供CPU和内存隔离的运行环境。
  • DockerContainerExecutor:基于Docker实现的ContainerExecutor,可直接在YARN集群中运行Docker Container。Docker是基于Linux Container技术构建的非常轻量级的虚拟机,目前被广泛应用在服务部署、自动化测试等场景中。

标签:基本,Container,ResourceManager,调度,应用程序,YARN,架构,资源
From: https://blog.51cto.com/key3feng/6050998

相关文章

  • linux基本功系列之tar命令实战
    前言大家好,又见面了,我是沐风晓月,本文是专栏【linux基本功-基础命令实战】的第44篇文章。此专栏是沐风晓月对Linux常用命令的汇总,希望能够加深自己的印象,以及帮助到其他的......
  • C语言学习:案例:单链表的基本实现
     1#include<io_utils.h>2#include<stdlib.h>34typedefstructListNode{5intvalue;6structListNode*next;7}ListNode;89......
  • git - 安装地址,基本命令,设置配置,
    1.Git安装地址:https://git-scm.com/downloads 2.基本命令#查看配置gitconfig-l#查看Git所有配置gitconfig--system--list#查看系统配置gitconfig--global......
  • AOP基本概念
    一、面向切面编程(AspectOrientedProgramming)是对面向对象编程(OOP)的有益补充和升级AOP编程思想研究的不是层与层之间的关系,主要的是同一层的各个不同功能块共性功能,比如:访......
  • x86架构的内存溢出攻击原理演示(加强对计算机运行原理的理解,说明内存溢出的危害)
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。前置说明  本文作为本人csdnblog的主站的备份。(BlogID......
  • FFmpeg 基本操作摘要(一) (转流、解码、编码)
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。前置说明  本文作为本人csdnblog的主站的备份。(BlogID......
  • 关于架构设计
    业务架构原则从在软件开发的角度来看,在项目前期做好业务架构设计,对整个项目的开发都有重要的意义。由于业务和公司战略息息相关,其业务架构设计不是研发架构师能决定,当公司......
  • Linux Socket 摘要(二)(基于TCP的C/S基本实现,相关基础知识,非阻塞select)
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。前置说明  本文作为本人csdnblog的主站的备份。(BlogID......
  • 【运维篇】 经典LNMP架构——搭建个人博客系统
    LNMP架构(Linux+Nginx+MySQL+PHP)同LAMP架构(Linux+Apache+MySQL+PHP)一样,都是主要应用于动态网站的web架构,这两种架构具有很多优势,是目前企业部署网络的首选平台。近些年LNMP越......
  • JSTL练习和三层架构
    JSTL练习需求:在request域中有一个存有User对象的List集合。需要使用jstl+el将list集合数据展示到jsp页面的表格table中<%@taglibprefix="c"uri="http://java.sun.com......