YARN
YARN(Yet Another Resource Negotiator)是一种资源调度框架。作为一种通用的资源管理平台,可以运行各种各样的程序。
- 什么是资源?
- CPU,内存
- 好处:
- 资源统一管理,统一分配,避免浪费
YARN -- 主从架构 YARN由一个ResourceManager和多个NodeManager共同组成。
ResourceManager
ResourceManager是一个全局的资源管理器
- 功能
- 追踪活着的NodeManager及集群中可用资源
- 启动、监控Application Master
- 为应用或者任务定位资源
- 主要组件
- 调度器(Scheduler)
- 应用程序管理器(Applications Manager)
NodeManager
- 功能
- 监控本节点资源使用情况,并上报给ResourceManager
- 以容器(Container)的形式提供计算资源
- 管理(Container)容器中运行的进程
Application Master
- 功能:
- 为应用内的任务申请资源
- 任务的监控、容错
- 负责协调来自ResourceManager的资源,并通过NodeManager监视Container的执行和资源使用情况
Container
YARN中以Container为资源分配单位。YARN会为每个任务分配一个Container,且该任务只能用该Container指定数量的资源。Container是一个动态资源划分单位。
YARN应用提交过程
- 客户端向ResourceManager提交任务,并请求一个Application Master
- ResourceManager找到一个运行Container的NodeManager,并在该Container上启动Application Master
- Application Master向ResourceManager进行注册。ResourceManager获得Application Master信息。客户端和Application Master交流,向Application Master发送一个满足自己需求的资源请求
- Application Master向ResourceManager发送一个资源请求
- Container被成功分配,Application Master与NodeManager交流,Task在启动的Container运行
- 任务完成后,Application Master向ResourceManager取消注册并关闭,把所有的Container归还给系统。
YARN调度器
- FIFO Scheduler
- Capacity Scheduler
- Fair Scheduler
FIFO Scheduler
先进先出调度器,顾名思义,是一种先进先出的队列。不太适合使用,因为会造成大任务阻塞小任务的情况。
Capacity Scheduler
容量调度器。在xml文件中配置,设计容量调度器队列资源分配。当任务占有资源没有达到所设置的资源上限,且系统中有资源空闲时,即没有任务在用该资源,可以进行资源抢占。利用百分比进行配置,可以配置无上限给资源。
Fair Scheduler
公平调度器。在xml文件中配置,设计权重。同一个资源内,队列之间彼此是公平共享的。