【发布时间】:2018-12-03 17:48:10
【问题描述】:
根据the Flink documentation,存在两个维度来影响任务可用的资源量:
- 任务管理器的数量
- 任务管理器可用的任务槽数。
每个 TaskManager 有一个插槽意味着每个任务组在单独的 JVM 中运行(例如,可以在单独的容器中启动)。拥有多个插槽意味着更多的子任务共享同一个 JVM。同一 JVM 中的任务共享 TCP 连接(通过多路复用)和心跳消息。 它们还可以共享数据集和数据结构,从而减少每个任务的开销。
使用文档中的这一行,您似乎总是倾向于增加每个任务管理器的任务槽数而不是增加任务管理器的数量。
一个具体的场景:如果我在 Kubernetes 中部署了一个作业集群(假设有 16 个 CPU 内核可用)和一个由一个源 + 一个映射函数 + 一个接收器组成的管道,那么我会默认使用单个 TaskManager该 TaskManager 有 16 个可用插槽。
这是最佳配置吗?有没有一种情况,我更喜欢 16 个 TaskManager,每个都有一个插槽,或者可能是 TaskManager 和可以利用所有 16 个 CPU 内核的插槽的组合?
【问题讨论】:
-
粗略浏览邮件列表似乎证实了我的假设[1],但最好了解更多关于逆向(X 任务管理器,每个任务管理器 1 个慢)或混合(多个任务管理器)的论点每个都有几个插槽)。 [1]apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/…
标签: apache-flink flink-streaming