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_原理的主要内容,如果未能解决你的问题,请参考以下文章