Yarn_原理

Posted BTCIAB

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Yarn_原理相关的知识,希望对你有一定的参考价值。

一、ResourceManager

1、介绍

(1)特点

    1.是一个进程;

    2.RM是一个全局资源管理器,负责集群的资源管理和协调;

    3.可以使得多种计算框架运行在一个集群中(实时场景、迭代场景、图计算场景的计算框架);

(2)作用与组成

    1.负责启动和监控applicationMaster

    2.监控NodeManager、资源的分配和调度

   3.主要有两个构件组成:

        调度器scheduler 

        应用程序管理器 applications Manager(asm)

    4.良好的扩展性和高可用;

    5.对于多种类型的应用进行统一的管理和调度;

    6.自带了多种用户调度器,适合共享集群环境(有一个可以插拔的调度组件)

    7.相比于传统模式,提供了资源利用率,降低了运维成本;

   8.针对NM:监控节点转态

    9.针对AM:监控AM状态:监控作业提交;监控资源请求;Am是由Nm启动


2、调度器 scheduler

(1)是一个纯调度器

    1.它不参与任何具体应用相关的工作,不负责监控和跟踪应用的执行状态,也不负责重新启动执行失败或者硬件故障的失败任务

    2.根据应用程序的资源需求进行资源分配

    3.调度器根据容量,队列等限制条件(每个队列分配一定的资源,最多执行一定数量的作业),将系统中的资源分配给正在运行的应用程序

(2)调度器类型

    1.先进先出调度器 FIFO

    2.容量调度器 capacity Schedule

    3.公平调度器 Fair Schedule


3、应用程序管理器 applications Manager (ASM)

    1.负责管理整个系统中所有的应用程序

    2.接受job的提交请求

    3.为应用分配第一个container来运行applicationMaster。其中包括应用程序提交,与调度器协商资源来进行启动am,监控am运行状态以及在失败时重新启动它。


二、 NodeManager

1、介绍

(1)简介

    1.是一个slave服务,负责接受rm的资源分配请求,分配具体的container给应用

    2.负责监控和报告container的使用信息给RM

(2)功能

    1.接受来自rm的命令请求,分配container给应用的某个任务

    2.nm本节点上的资源使用情况和各个container的运行状态(cpu和内存资源)

    3.定时向rm汇报保证整个集群的运行。rm通过收集每个nm的报告信息来追踪整个集群的健康状态。nm负责监控自身的健康状态。

    4.处理am的请求

    5.管理自身节点的container的生命周期

    6.管理节点的日志信息

    7.启动时向rm注册并汇报自身的资源情况

    8.运行期间,通过nm和rm协同工作,这些信息会不断地更新来保障整个集群发挥出最佳状态

    9.nm负责管理自身的container,它并不知道运行在他上面的应用信息,负责管理应用信息的是am


2、 Container

(1) 简介

    1.是对于资源的一种抽象,是动态生成的

    2.分类:主要是两类 CPUContainer 内存container,

    3.一个nm管理者多个container,且任务只能使用该container描述的资源

    4.在yarn框架中,rm负责告诉am哪些container可以使用

    5.am需要找nm请求分配具体的container

(2)作用

    1.是对task任务环境的一种抽象

    2.描述一系列信息

    3.任务运行的资源集合,任务运行环境


三、ApplicationMaster

1、简介

(1)是一个进程,负责进行作业调度和监控

(2)AM本质就是一个Container

(3)负责数据切分,为应用程序申请资源并进一步分配给内部任务task

(4)负责协调来自rm的资源,并通过nm监视容器的执行和资源使用情况


2、am和rm之间的通信机制

(1)yarn应用从提价到运行的最核心部分,是yarn对整个集群进行冬天资源管理的根本步骤

(2)yarn的动态性,来自源于application的am的动态地和rm进行沟通,不断地申请,释放,再申请,再释放资源的过程


2、Resource Request

(1)设计目标

    1.允许各种应用以安全、共享、多租户的形式使用集群

    2.为了保证集群资源调度和数据访问的高效性,yarn还必须能够感知整个集群拓扑结构

    3.为了实现该设计目标,rm的调度器scheduler为应用程序的资源请求定义了一些灵活的协议

(3)功能

    1.一个应用先向am发送一个满足自己需求的资源请求

    2.am把这个资源请求以resource-request的形式发送给rm的scheduler

    3.scheduler再在这个原始的resource-request中返回分配到的资源描述container

    4.每个resource-request可以被看做是一个可序列化的Java对象,


四、其他介绍

1、JobHistoryServer

(1)简介

    1.是一个作业历史服务

    2.通过命令启动 mr-jobhistory-daemon.sh start historyserver

    3.启动后可以通过jps看到 jobhistoryserver

    4.可以从端口19888查看详细的日志信息


2、TimelineServer

(1)功能

    1.用来写日志服务数据,一般来写与第三方结合的日志服务数据,例如spark

    2.它是对jobhistoryserver的功能的有效补充,jobhistoryserver只是对mr类型作业信息进行记录

    3.它记录了更细粒度的信息,例如任务在哪个队列中执行,运行任务时设置的用户是哪个用户

    4.是与jobhistoryserver功能之间的互补关系


3、yarn的运行原理

(1)客户端向rm提交应用,并请求一个am实例

(2)rm找到一个可以运行一个container的nm,并在这个container中启动一个am

(3)am向rm进行注册,注册之后客户端就可以从rm上获取自身am的详细信息。

(4)am根据request-resource协议向rm发送请求

(5)当资源分配成功之后,am向nm发送container-launch_specification信息,启动container

(6)应用程序以task的形式在container中运行,并把运行的速度,状态等信息通application-specific协议发送给am

(7)在应用程序运行期间,客户端主动与am进行交流获取应用运行状态,进度等信息,交流协议也是application-specific

(8)应用程序执行完成并且所有相关工作已经完成,am向rm取消注册然后关闭,所有的container归还系统


4、yarn执行mr应用

    提交作业

    初始化作业

    task任务分配

    task任务执行

    作业运行进度和状态更新

    完成作业


6、yarn的容错机制

(1)RM挂掉

    单点故障,新版本可以基于Zookeeper实现HA高可用集群,可通过配置进行设置准备RM,主提供服务,备同步主的信息,一旦主挂掉,备立即做切换接替进行服务

(2)NM挂掉:

    不止一个,当一个挂了,会通过心跳方式通知RM,RM将情况通知对应AM,AM作进一步处理

(3)AM挂掉:

    若挂掉,RM负责重启,其实RM上有一个asm,是AM的AM,上面保存已经完成的task,若重启AM,无需重新运行已经完成的task


五、yarn使用相关

1、常用命令

(1)启动 yarn-start.sh

(2)停止 stop-yarn.sh

(3)单独启动

    1.yarn-daemon.sh start resourcemanager

    2.yarn-daemon.sh stop resourcemanager

(4)查看正在运行的任务 yarn application -list

(5)杀掉正在运行的任务 yarn application -kill 任务id

(6)查看节点列表 yarn node -list

(7)查看节点状态 yarn node -status node-03:端口

(8)查看yarn依赖的jar环境变量 yarn classpath


2、 应用状态

    new 新建状态

    new_saving 新建保存状态

    submitted 提交状态

    accepted 接受状态

    running 运行状态

    finished 完成状态

    failed 失败状态

    killed 杀掉状态 


以上是关于Yarn_原理的主要内容,如果未能解决你的问题,请参考以下文章

[第二章] spark-yarn原理分析

YARN原理介绍

Hadoop — Yarn原理解析

大数据基础总结---MapReduce和YARN技术原理

Yarn原理

深入YARN系列1:窥全貌之YARN架构,设计,通信原理等