YARN资源调度框架详解
1、YARN
(1)Yet Another Resource Negotiator
(2)通用的资源管理系统
(3)为上层应用提供统一的资源管理和调度
2、架构要点:
Client、ResourceManager、NodeManager、ApplicationMaster
master/slave:RM/NM
(1)Client:向RM提交任务、杀死任务等
(2)ApplicationMaster:
每个应用程序对应一个ApplicationMaster(AM)
AM向RM申请资源,用于在NM上启动对应的Task
数据切分
为每个Task向RM申请资源(container)
与NodeManager通信
任务的通信
(3)NodeManager:多个
真正的干活节点:计算
向RM发送心跳信息、任务的执行情况
接收来自RM的请求来启动任务
处理来自AM的命令
(4)ResourceManager
ResourceManager有两个主要组件:Scheduler和ApplicationManager。
集群中同一时刻对外提供服务的,只有1个,负责资源相关的
启动/监控AM
监控NM
(5)container
任务的运行抽象
memory、cpu...
task是运行在container里面的
一个container里面,可以运行AM、也可以运行具体的map/reduce task
(6)数据/资源从client提交到RM后,NM先申请AppMaster,然后AppMaster向ResourceManager申请资源,
AppMaster申请资源ok之后,到对应NodeManager启动container,最后在container中启动map task /reduce task。
(7)ApplicationManager、ApplicationMaster
ApplicationManager负责接受作业提交,协商用于执行特定于应用程序的ApplicationMaster的第一个容器,并提供用于在出现故障时重新启动ApplicationMaster容器的服务。
每个应用程序的ApplicationMaster负责与调度器协商适当的资源容器,跟踪它们的状态并监视进度。