Hadoop学习-Yarn

Yarn

相关概念

Yarn的基本思想是拆分资源管理的功能,作业调度/监控到单独的守护进程

ResourceManager 全局资源管理器,负责对系统中的所有资源进行管理 ,处理客户端请求,启动或监控MRAppMaster,监控nodemanager,资源的调度和分配

​ 由两个组件组成:Scheduler调度器,应用程序管理器 Applications Manager

Scheduler复制资源的调度,根据容量,队列等限制,将资源分配给各个正在运行的应用程序

Application Manager负责管理所有应用程序,包括应用程序提交,与调度器协商资源以启动applicationMaster,监控AM运行状态,并在失败时重新启动它

ApplicationMaster用户提交的每一个应用均包含一个AM,用于与RM协调器协商以获取资源,将得到的任务进一步分配给内部的任务,与NM通信以启动/停止任务 ,监控所有任务的状态,在任务失败的时候重新为任务申请资源以重启任务

NodeManager是每个节点上的任务和资源管理器,是真正执行应用程序的容器的提供者, 监控应用程序的资源使用情况(CPU,内存,硬盘,网络),并通过心跳向集群资源调度器 ResourceManager 进行汇报以更新自己的健康状态。同时其也会监督 Container 的生命周期 管理,监控每个 Container 的资源使用(内存、CPU 等)情况,追踪节点健康状况,管理日志和不同应用程序用到的附属服务

Container容器是一个抽象出来的逻辑资源单位。容器是由ResourceManager Scheduler 服务动态分配的资源构成,它包括了该节点上的一定量 CPU,内存,磁盘,网络等信息,MapReduce 程序的所有 Task 都是在一个容器里执行完成的,容器的大小是可以动态调整的

​ 调度器仅仅根据各个应用程序的需求进行资源分配,而资源分配单位用一个抽象概念–资源容器来表示,Resource Container, 他是一个动态资源分配单位,将内存和CPU资源封装在一起,从而限定每个任务的使用资源量

管理集群上资源的使用的资源管理器Resource Manager

运行在集群中所有节点上且能够启动和监控容器的节点管理的node manager

执行流程

Hadoop学习-Yarn

  1. 用户向 YARN 中提交应用程序,其中包括 MRAppMaster 程序,启动 MRAppMaster 的命令, 用户程序等
  2. ResourceManager 为该程序分配第一个 Container,并与对应的 NodeManager 通讯,要求它在这个 Container 中启动应用程序 MRAppMaster
  3. MRAppMaster 首先向 ResourceManager 注册,这样用户可以直接通过 ResourceManager 查看应用程序的运行状态,然后将为各个任务申请资源,并监控它的运行状态,直到运行结束,重复 4 到 7 的步骤。
  4. MRAppMaster 采用轮询的方式通过 RPC 协议向 ResourceManager 申请和领取资源
  5. 一旦 MRAppMaster 申请到资源后,便与对应的 NodeManager 通讯,要求它启动任务
  6. NodeManager 为任务设置好运行环境(包括环境变量、JAR 包、二进制程序等)后,将 任务启动命令写到一个脚本中,并通过运行该脚本启动任务
  7. 各个任务通过某个 RPC 协议向 MRAppMaster 汇报自己的状态和进度,以让 MRAppMaster 随时掌握各个任务的运行状态,从而可以在任务败的时候重新启动任务
  8. 应用程序运行完成后,MRAppMaster 向 ResourceManager 注销并关闭自己

Hadoop学习-Yarn

​ 客户端的请求,会在resource manager中生成一个资源队列(LinkedList),一个job生成一个队列,资源队列中存放着container,一个container代表一个进程,该进程会按照资源队列的顺序在nodemanager上进行执行,执行的优先级是哪个nodemanager的内存资源丰富,就在谁上面执行;如果没有可用的nodemanager就等着,有了在分配

​ 在YARN运行一个应用,首先客户端联系资源管理器,要求他运行一个application master进程;然后,资源管理器找到一个能够在容器中启动applicaiton master 的节点管理器。application master运行起来以后能做什么依赖于应用本身

使用YARN的好处:

可扩展性:yarn通过资源管理器和application master分离的架构特点增加了可扩展性

可用性:HA high availability 当服务守护进程失败时,通过另一个守护进程复制接管工作所需的状态以便其继续的提供服务

利用率:一个节点管理器管理一个资源池,一个应用能够按需求请求资源

多租户:向除了MapReduce以外的其他类型的分布式应用开放了Hadoop

YARN中的调度

FIFO调度器,容量调度器,公平调度器

FIFO:将应用放在一个队列中,按照提交的顺序运行应用, 简单易懂,不需要任何配置,不适合大型集群

容量调度器:一个独立的队列保证小作业一提交就可以被启动,以整个集群的利用率为代价的,大作业的执行时间要更长

公平调度器:调度器在所有的作业之间动态平衡资源


参考自:https://www.cnblogs.com/qingyunzong/p/8615096.html

学习中,有不正确的地方多多指教