架构设计
YARN 总体上仍然是 Master/Slave 结构,在整个资源中,ResourceManager 为 Master,NodeManager 为 Slave。YARN 主要由 ResourceManager、NodeManager、ApplicationMaster 和 Container等几个组件构成。
概略介绍:
-
Master/Slave 结构,1 个 ResourceManager 和多个 NodeManager。
-
Yarn 由 Client、ResourceManager、NodeManager、ApplicationMaster 组成。
-
Client 向 ResourceManager 提交启动任务、杀死任务等命令请求。
-
ApplicationMaster由对应的计算框架编写的应用程序完成。每个应用程序对应一个ApplicationMaster,ApplicationMaster 向ResourceManager 申请资源用于在 NodeManager上启动相应的 Task。
-
NodeManager 向 ResourceManager 通过心跳信息汇报 NodeManager 监控状况、任务执行状况、 领取任务等。
YARN调度策略:
-
FIFO Scheduler(First In First Out,先进先出):
默认的调度策略,把所有用户提交的作业顺序排成一个队列,所有用户共享,是一个先进先出的队列。无法控制用户的资源使用,造成集群可用性差。一般不在生产环境使用。
-
Capacity Scheduler(容器调度器)
允许多用户共享整个集群,每个用户或组织分配专门的队列,不支持抢占式。队列内部默认使用FIFO,也支持 Fair 调度。 (多用户、分队列、ACL 控制、不支持抢占式,队列内部依然是 FIFO,也可以采用 Fair )
-
Fair Scheduler(公平调度器)
支持多用户共享集群,分队列,队列内部不是FIFO,而是采用公平分配方式。(多用户、分队列、ACL 控制、支持抢占式,队列内部不是 FIFO,而是公平分配的方式 )