一.yarn是什么?
资源管理器
二.yarn的架构设计
核心思想是将JobTracker的两个主要职责:资源管理和任务调度,分别交给两个角色负责(解耦)
一个是全局ResourceManager(管理全局资源),一个是每个应用中唯一的ApplicationMaster(管理大部分任务调度)
ResourceManager以及每个节点一个NodeMager构成了新的通用系统
2.2基本组成:
YARN总体上仍然是Master/Slave结构(主从结构), ResourceManager为Master, NodeManager 为Slave.
YARN主要是由ResourceManager,NodeManager,ApplicationMaster和Container等几个组件构成
2.3概略介绍
1Master/Slave结构(主从结构) 1个ResourceManager和多个NodeMnager
2Yarn由Client,ResourceManager,NodeManager,ApplicationMaster和Container组成
3Client向RsourceManager提交启动任务,杀死任务等命令请求
4ApplicationMaster由对应的计算框架编写的应用程序完成,每个应用程序对应一个
ApplicationMaster,ApplicationMaster向ResourceManager申请资源用在NodeManger上启 动相应的Task
6NodeManager向ResourceManager通过心跳信息汇报NodeManager监控状况、任务执行状况、领取任务等
2.4详细介绍
Client:面向用户提交Driver代码,作为用户变成的接口,与ResourceManager交互
ResourceManager:用来负责集群资源的统一管理和调度
1>负责整个集群的资源的分配和调度
2>处理来自客户端的请求,启动和杀死应用程序
3>启动监控ApplicationMaster,一旦一个AM挂了之后,RM将会在另一个NM上启动该AM
4>监控NM,接受NM的心跳汇报信息,查看NM的资源管理和使用
NodeManager:整个集群中有多个,负责单节点资源管理和使用
1>.负责节点上的资源管理和任务分配
2>.处理来自ApplicationMaster的命令
3>.接受并处理来自ResourceManager的Container启动,停止的各种命令
4>.周期向ResourceManager汇报本节点上的资源使用情况和Container的运行状态
ApplicationMaster:每个应用程序特有,负责应用程序的管理
1>.数据的切分
2>.为应用程序请求资源,并且分配任务
3>.与NodeManager通信以启动,停止任务
4>.任务的监控和容错
5>.处理ResourceManager发来的命令,让NodeManager重启
Container:对任务运行环境的抽象
1>.任务运行资源的抽象,封装了某个节点的多维度资源
2>.任务命令启动、停止的执行单元
3>.任务运行环境,任务运行在Container中

2.5运行流程的详解:
1>用户向YARN中提交应用,
2>RseourceManager分配资源Conrainer,并要求NodeManager启动ApplicationMaster
3>.NodeManager启动资源运行ApplicationMaster
4>.向ResourceManager申请资源
5>.ApplicationMaster申请到资源后,发消息给NodeManager要求他启动任务
6>.NodeManager执行任务,启动Container
7>.Container反馈信息给ApplicationMaster让他掌握自己的活动状态,判断是否完成
8>.ApplicationMaster向ResourceManager发送完成任务,请求你关闭
三.yarn调度策略
1.MRv1的调度方式:集中式调度器,资源调度和应用程序的管理功能集中到单一进程完成,扩展性差。
2.Yarn双层调度架构:
3.常用调度策略:
FIFO Scheduler
只有一个队列
Capacity Schedule(中庸之道)
多用户、分队列、ACL控制、不支持抢占式,队列内部依然是FIFO,也可以采用Fair
Fair Scheduler
多用户、分队列、ACL控制、支持抢占式,队列内部不是FIFO,而是公平分配的方式
1万+

被折叠的 条评论
为什么被折叠?



