-
调度器
SchedulerNG:
介绍:
是Flink从1.10版本开始引入的新的任务调度器,相比之前的调度器具有更高的性能和可扩展性。
特性:
1、负责将任务分配给可用的执行槽,并管理执行槽的生命周期。
2、根据任务的需求和执行槽的资源情况,动态地决定任务在哪个执行槽上执行,并实现任务和执行槽之间的匹配和调度。
3、采用了基于优先级的任务调度算法,可以根据任务的优先级和需求对任务进行排序和调度。
4、提供了资源管理、心跳检测、故障恢复等功能,可以实现任务的高效执行和容错能力。
5、具有更高的性能和可扩展性,可以支持数万个执行槽和数百个任务的调度,同时保持较低的延迟和高吞吐量。 -
调度策略
SchedulingStrategy:
介绍:
SchedulingStrategy主要用于定义任务调度的策略,即如何将任务分配给可用的执行槽。不同的SchedulingStrategy会采用不同的调度策略,以满足不同的需求和场景。
支持策略:
EagerSchedulingStrategy:适用于流计算,同时调度所有的task
LazyFromSourcesSchedulingStrategy:适用于批处理,当输入数据准备好时(上游处理完)进行vertices调度。
PipelinedRegionSchedulingStrategy:以流水线的局部为粒度进行调度。 -
调度模式
ScheduleMode:
介绍:
用于指定任务的调度模式,即如何将任务分配到可用的执行槽中。
支持模式
Eager调度:
适用于流计算。一次性申请需要的所有资源,如果资源不足,则作业启动失败。
分阶段调度:
LAZY_FROM_SOURCES适用于批处理。从SourceTask开始分阶段调度,申请资源的时候,一次性申请本阶段所需要的所有资源。上游Task执行完毕后开始调度执行下游的Task,读取上游的数据,执行本阶段的计算任务,执行完毕之后,调度后一个阶段的Task,依次进行调度,直到作业完成。
分阶段Slot重用调度:
LAZY_FROM_SOURCES_WITH_BATCH_SLOT_REQUEST适用于批处理。与分阶段调度基本一样,区别在于该模式下使用批处理资源申请模式,可以在资源不足的情况下执行作业,但是需要确保在本阶段的作业执行中没有Shuffle行为。