1 理想情况下,应用对Yarn资源的请求应该立刻得到满足,但现实情况往往资源是有限的,特别是在一个很繁忙的集群,一个应用资源的请求经常需要等待一段时间才能得到相应的资源。
2 在yarn中负责给应用分配资源的就是schedule
3 yarn 架构
1 Resource Manager(RM) :
1 构成:
① Schedule
② Application Master
2 负责对各NM上的资源进行统一管理和调度,将AM分配给空闲的Container运行并监控其状态
3 对AM申请的资源请求分配相应的空闲Container
2 Schedule:
1 根据应用程序的资源要求,以及集群机器的资源情况,为应用程序分配封装在Container中的资源
2 调度器是可插拔的,例如:CapacitySchedule、FairSchedule
3 Application Manager:
1 管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动AM
2 负责向RM协调资源
3 与Nodemanager协同工作,完成task的执行和监控
4 监控或者跟踪应用程序的状态,也负责任务因为各种原因而需要的重启
4 Nodemanager
1 向RM汇报本节点的资源使用情况 和 各个Container 的运行状态
2 接收并处理来自AM的Container启动/停止等请求
5 Container
1 是yarn中的资源抽象,它封装了某个节点上的多维资源,如内存、CPU、磁盘、网络等
2 当AM向RM申请资源时,RM为AM返回的资源便是Container表示的
3 yarn会为每个任务分配一个Container且该任务只能使用该Container中描述的资源
4 yarn调度器
1 FIFO Schedule
1 单队列,根据作业提交的先后顺序,先到的先服务
2 不适用共享集群,大的应用可能会占用所有集群资源,这就导致其他应用被阻塞
3 优点:
简单易懂
4 缺点:
不支持多队列,生产环境很少用
2 Capacity Schedule
1 优点:
1 多队列:每个队列可配置一定的资源量,每个队列采用FIFO调度策略
2 容量保证:可以为每个队列设置资源最低保证和资源上限
3 灵活性:如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用提交,则其他队列借调的资源会归还给该队列
4 多租户:支持多用户共享集群和多应用程序同时运行。为了防止同一用户的作业独占队列中的资源,该调度器会对同一用户提交作业所用的资源量进行限定
3 Fair Schedule
与容量相比较:
相同点:
1 多队列:支持多队列操作
2 容量保证:可以为每个队列,设置资源最低保证和资源使用上限
3 灵活性:如果一个队列中资源有剩余,可以暂时共享给其他需要资源的队列,当该队列有新任务提交,则其他队列借调的资源会归还给该队列
4 多租户:支持多用户共享集群,多个应用程序同时运行
不同点:
1 核心调度策略不同
① 容量调度器:优先选择资源利用率低的队列
② 公平调度器:优先选择对资源的缺额比较大的
2 每个队列可以单独设置资源分配方式
①容量调度器:FIFO、DRF
②公平调度器:FIFO、DRF、FAIR
4 缺额
1 缺额:某一时刻,一个作业应该获取获取的资源 和 实际获取资源的差距
2 公平调度器的设计目标:在时间尺度上,所有作业获得公平的资源
3 公平调度器会优先为缺额大的作业分配资源
5 队列资源分配方式:
1 FIFO策略
2 Fair策略
3 DRF策略 -- 内存、CPU、硬盘、网络 进行主资源衡量