Flink 的任务调度策略主要围绕 JobManager 对作业(JobGraph → ExecutionGraph)的调度、TaskManager 对任务的分配与执行、以及运行时对资源与反压的动态调整 展开。下面从 核心调度流程、调度模式、Slot 分配策略、任务部署与执行策略、以及运行时动态调整机制 几个方面系统说明。
Flink 提供了多种调度模式,决定 任务何时启动、如何并行启动。
Streaming Job 默认使用 Eager 调度
Batch Job 默认使用 Lazy From Sources
Slot 是 Flink 最核心的调度资源单位。
同一个 Slot Sharing Group 中的任务可以共享一个 Slot
Source → Map → Sink
在一个 Slot 中可同时运行这三个算子的子任务
.map(...).disableChaining().slotSharingGroup("group1");
任务链是 调度层面的优化策略,影响任务部署方式。
env.disableOperatorChaining();
或
.map(...).startNewChain();
env.setRestartStrategy(RestartStrategies.fixedDelayRestart(
3,
Time.of(10, TimeUnit.SECONDS)
));
| 调度维度 | 策略 | 适用场景 |
|---|---|---|
| 调度模式 | Eager | 流作业 |
| 调度模式 | Lazy | 批作业 |
| Slot 策略 | Slot Sharing | 默认推荐 |
| Slot 策略 | 隔离 Slot | 特殊资源需求 |
| 任务链 | Operator Chain | 性能优化 |
| 故障恢复 | 重启策略 | 稳定性 |
| 自适应 | Reactive / Adaptive | 云原生 |
如果你愿意,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。