博学谷提供支持
集群资源是非常有限的,在多用户、多任务环境下,如何保证在有限资源或业务约束下有序调度和执行任务,需要有一个协调者,这就是YARN资源调度器。
YARN所有的资源调度器均实现Resource Scheduler接口,因此是一个插拔式组件。
用户可以自己通过配置参数来配置不同的调度器,也可以按照接口规范来编写一个新的资源调度器,通过简单的配置,使它运行起来。
默认情况下,YARN采用的是Capacity Scheduler调度器。
从另一个角度看,YARN资源调度器是一个事件处理器,由外部事件触发驱动,它需要处理来自外部的Scheduler Event Type类型事件。
这类事件总共有6个,分别是NODE_ADDED(添加一个计算节点)、NODE_REMOVED(移除一个计算结点)、APPLICATION_ADDED(添加一个应用程序)、APPLICATION_REMOVED(移除一个应用程序)、CONTAINER_EXPIER(回收超时的Container)、NODE_UPDATE(更新节点)。
其中NODE_UPDATE是最重要的,NodeManager通过心跳机制向ResourceManager汇报信息会触发NODE_UPDATE事件,因为此时可能有Container得到释放,因此该事件会触发资源分配。
下面是YARN自带的Capacity Scheduler和Fair Scheduler的介绍及配置说明。