当前位置: 首页 > web >正文

Flink 的任务槽和槽共享

在 Apache Flink 中,任务槽(Task Slot)槽共享组(Slot Sharing Group) 是资源管理和任务调度的关键机制。它们决定了 Flink 如何在集群中分配资源并执行任务。


一、任务槽(Task Slot)

1. 定义

  • Task Slot 是 TaskManager 提供的资源单位,代表一个独立的线程或资源隔离单元。
  • 每个 Slot 可以运行多个 SubTask(来自不同 JobVertex),但这些 SubTask 必须属于同一个 Job,并且可以共享 Slot。

2. 配置方式

# flink-conf.yaml
taskmanager.numberOfTaskSlots: 4
  • 一个 TaskManager 可以配置多个 Slot(例如 4 个)。
  • 每个 Slot 默认拥有相同的内存资源(可通过 taskmanager.memory.task.heap.size 等参数精细控制)。

3. Slot 的作用

作用描述
资源隔离Slot 是资源分配的基本单位,限制并发任务数。
并行度支持一个 Job 的并行度不能超过 Slot 总数。
资源利用率合理设置 Slot 数量可提升资源利用率和吞吐量。

二、槽共享(Slot Sharing)

1. 定义

  • 槽共享(Slot Sharing) 是指多个 Operator 或 SubTask 可以运行在同一个 Slot 中。
  • 这是 Flink 优化资源利用的重要机制,避免为每个 Operator 单独分配 Slot。

2. Slot Sharing Group

  • 通过 slotSharingGroup() 方法将一组 Operator 分配到同一个槽共享组。
  • 同一个组内的 Operator 可以共享 Slot,即可以在同一个 Slot 中执行。
示例代码:
stream.map(new MyMapper()).name("Mapper").slotSharingGroup("group1");
stream.keyBy(...).process(new MyProcessFunction()).name("Processor").slotSharingGroup("group1");
  • 上述两个 Operator 属于同一个 Slot Sharing Group,Flink 将尝试将它们部署在同一个 Slot 中。

三、Slot 共享的条件

条件描述
同一个 Job只有同一个 Job 的 Operators 才能共享 Slot。
相同 Slot Sharing GroupOperator 必须属于同一个 Slot Sharing Group。
不需要网络传输如果两个 Operator 之间是一对一连接(如 map → map),可以共享 Slot。
Keyed StreamKeyed Operators 可以共享 Slot,前提是它们的 key 分布一致。

四、Slot 分配策略

1. Slot 分配流程

  • Flink Scheduler 根据 JobGraph 构建 ExecutionGraph。
  • 根据 Slot Sharing Group 和并行度,将 SubTasks 分配到各个 Slot。
  • 每个 Slot 包含多个连续的 Operators(SubTasks),形成 Operator Chain。

2. Slot 分配示意图

假设一个 Job 包含如下结构:

Source → Map → Filter → Sink

如果所有 Operators 都允许共享 Slot,则整个链可能被分配到一个 Slot 中。


五、资源分配与并行度关系

TaskManager 数量Slot 数量/TaskManager最大并行度
248
326
188

注意:Job 的并行度不能超过 Slot 总数。


六、高级配置与优化建议

配置项描述
default_slot_sharing_group默认 Slot Sharing Group 名称
slot.model.type设置为 SHAREDDEDICATED 控制是否启用共享
execution.checkpointing.min-pause-between-checkpoints避免 Checkpoint 对 Slot 使用造成影响
taskmanager.memory.managed.fraction控制 Slot 内存使用比例

七、总结对比表

概念描述是否默认启用
Task SlotTaskManager 的资源单位✅ 默认启用
Slot Sharing多个 Operator 共享一个 Slot✅ 默认启用
Slot Sharing Group自定义分组控制共享范围❌ 默认不设置
DEDICATED Slot强制 Operator 独占 Slot✅ 支持
http://www.xdnf.cn/news/6960.html

相关文章:

  • c++从入门到精通(五)--异常处理,命名空间,多继承与虚继承
  • 第一次经历项目上线
  • HarmonyOS NEXT~鸿蒙应用上架指南:HarmonyOS应用发布全流程解析
  • 大型语言模型中的QKV与多头注意力机制解析
  • 前端面经12 函数柯里化
  • redisson分布式锁实现原理归纳总结
  • 注册表设置windows背景护眼色
  • 机器学习,深度学习,神经网络,深度神经网络之间有何区别?
  • 【Linux网络】DNS与ICMP
  • vue使用Pinia实现不同页面共享token
  • OAuth2.0
  • ai agent(智能体)开发 python高级应用6:用crawl4ai0.6.3抓取分类 形成每日简报
  • 洛谷 全排列问题
  • 【从设置到上传的全过程】本地多个hexo博客,怎么设置ssh才不会互相影响
  • 星火杯大模型应用创新赛学习笔记——datawhale
  • ArrayList-集合使用
  • AGI大模型(20):混合检索之rank_bm25库来实现词法搜索
  • LVGL- 圆弧形状控件
  • 制作大风车动画
  • 【高斯拟合最终篇】Levenberg-Marquardt(LM)算法
  • Vue Router——路由基础详解(二)
  • Datawhale PyPOTS时间序列5月第3次笔记
  • Python实例题:Python百行制作登陆系统
  • Java中synchronized 关键字
  • Spring MVC 如何处理文件上传? 需要哪些配置和依赖?如何在 Controller 中接收上传的文件 (MultipartFile)?
  • Selenium无法定位元素的几种解决方案详解
  • AgentCPM-GUI,清华联合面壁智能开源的端侧GUI智能体模型
  • 远程主机状态监控-GPU服务器状态监控-深度学习服务器状态监控
  • 使用ts-node搭建typescript运行环境
  • Java Stream流:高效数据处理的现代解决方案