yarn的基本组成结构

来源:互联网 发布:java中如何使用debug 编辑:程序博客网 时间:2024/06/05 11:21

1、yarn主要有ResourceManager/ NodeManager/ ApplicationMaster  (图中给出了MapReduce和MPI两种计算框架的ApplicationMaster,分别为MR AppMstr 和MPI AppMstr 和container等几个组件构成

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

调度器

   调度器根据容量、队列等限制条件(如每个队列分配的一定的资源、最多执行的一定数量的作业等) 将系统中的资源分配给各个正字运行的应用程序。需要注意的是,该调度器是一个纯调度器、它不在从事任何与具体应用程序相关的工作。比如不负责监控或者跟着应用的执行状态等。也不负责重新启动因执行失败或者硬件故障而产生的失败任务,这些军交给应用程序AM完成,调度器仅根据各个应用的子单元需求进行资源分配。而资源分配单位用一个抽象概念 资源容器 简称 container 标示 ,它将内存、cpu、磁盘。网络等资源封装在一起,从而限定每个任务使用的资源量。此外,该调度器是一个可以插拔的组件、用户可以根据自己的需要设计新的调度器,yarn提供了多种可以使用的调度器

比如FairScheduler和 capacity Scheduler等

应用程序管理器

应用程序管理器负责管理整个系统中所有的应用程序,包括应用程序提交。与调度器协商资源以启动APPlicationMaster 监控ApplicationMaster运行的装填并在失败时重新启动它等。

为了保证高可行,ResourceManager将所有的状态信息保存到了Zookeeper中、它可以通过保存在Zookeeper中的装填快速重启

Am

用户提交的每个应用程序均包含一个am 他实际上是一个简化版的jobTracker,主要功能包括

1、与RM调度器协商已获取资源

2、与NM通信以启动、停止任务

3、监控所有的任务的运行状态。并在任务运行失败的时候重新为任务申请资源以重新启动


当前yarn自带了两个am的实现、一个是用于演示am编写方法的实例程序distributedshell 他可以申请一定数目的container运行一个shell命令或者shell脚本。另外一个是运行mapreduce的应用程序am amappmaster 我们

nodemanager 

nm是每个节点上的资源和任务管理器、一方面他会定时的想rm回报本节点上的资源使用情况,和哥哥container的运行状态,另外一个方面 它会接受处理来自am的任务启动 、停止等各种情况


container

是yarn中的资源分配单位,他封装了多维的资源,如内存,cpu 磁盘。网络 等 当am想rm申请资源的时候 rm为am返回的资源便是用 container表示的

yarn中每个任务俊辉对于一个container,且该任务只能在该conainer中执行,并仅能使用该容器代表的资源量。需要注意IDE是,container不同mrv1种的slot 他是一个动态资源划分单位、 根据应用程序的需求动态生成的。 yarn支持cpu 和内存两种资源、使用linux container进行资源隔离


rpc协议

1、job client 作业提交客户端 与rm之间的协议。 client rmProtocol client通过该rpc协议提交应用程序,查询应用程序状态等。

2、administrator管理员与rm之间的通信协议, rmadmiprotocol  administrator通过该rpc协议跟新系统配置文件,比如节点黑名单,用户队列权限等

3、am与rm之间的协议  amrmprotocol  jobam通过该rpc协议想rm注册和撤销自己。并为哥哥任务申请资源

4、am与nm之间的协议  containermanager am通过该rpc协议要求nm启动或者停止container 获取各种container的使用状态等信息

5、nm与rm之间的协议 resourcetracker nm通过该rpc协议想rm注册,兵哥定时发送心跳信息回报给当前节点的资源使用情况和container运行情况



yarn工作流程

当用户想yarn中提交一个应用程序后,yarn将分两个阶段运行该应用程序:第一阶段是否启动applicationmaster 第二个阶段是由applicationmaster创建应用 程序,为它申请资源

并监控它的整个运行过程,知道运行成功。如图1 

步骤:

1、用户想yarn中提交应用程序、启动包括applicationmaster程序、启动applicationmaster的命令、用户程序等。

2、resoucemanager为该程序分配第一个container,并与队友的nodenamenger通信,要求他在这个container中秋定应用程序的applicationmaster

3、applicationmaster首先向resoucemanager注册,这样用户可以直接通过resourcemanager查看应用程序的运行状态,然后,它将为各个人物申请资源,并监控其运行状态,直到运行结束。

4、applicationmaster采用轮询的方式通过rpc协议想resoucemanager申请和领取资源

5、一旦applicationmaster申请到资源后,就与对应的nodemanager同学,要求其启动人物

6、nodemanager为人物设置好运行环境(包括环境变量、jar包、二进制程序等)后将人物启动命令写到一个脚本中。并通过运行该脚本启动任务。

7、各个任务通过某个rpc协议想aplicationmaster回报自己的状态和进度、以让applicationmaser随时掌握各个任务的运行状态。从而可以在任务失败时重新启动任务。

在应用程序运行的过程中。用户可以随时通过rpc协议向applicationmaster查询应用程序的当前运行状态。

8、应用程序运行完成后、aplicationmaster向 resucemaanager注销,并关闭自己。


yarn在系统架构和软件设计等方面和mrv1相比都有明显的改进。在前几节


0 0
原创粉丝点击