【问题标题】:What are reasons to prefer increasing the number of task managers instead of task slots per task manager?有什么理由更喜欢增加任务管理器的数量而不是每个任务管理器的任务槽?
【发布时间】:2018-12-03 17:48:10
【问题描述】:

根据the Flink documentation,存在两个维度来影响任务可用的资源量:

  1. 任务管理器的数量
  2. 任务管理器可用的任务槽数。

每个 TaskManager 有一个插槽意味着每个任务组在单独的 JVM 中运行(例如,可以在单独的容器中启动)。拥有多个插槽意味着更多的子任务共享同一个 JVM。同一 JVM 中的任务共享 TCP 连接(通过多路复用)和心跳消息。 它们还可以共享数据集和数据结构,从而减少每个任务的开销。

使用文档中的这一行,您似乎总是倾向于增加每个任务管理器的任务槽数而不是增加任务管理器的数量。

一个具体的场景:如果我在 Kubernetes 中部署了一个作业集群(假设有 16 个 CPU 内核可用)和一个由一个源 + 一个映射函数 + 一个接收器组成的管道,那么我会默认使用单个 TaskManager该 TaskManager 有 16 个可用插槽。

这是最佳配置吗?有没有一种情况,我更喜欢 16 个 TaskManager,每个都有一个插槽,或者可能是 TaskManager 和可以利用所有 16 个 CPU 内核的插槽的组合?

【问题讨论】:

标签: apache-flink flink-streaming


【解决方案1】:

没有最佳配置,因为一般无法定义“最佳”。每个 TM 有一个插槽的配置提供了良好的隔离,并且通常更易于管理和推理。

如果您运行多个作业,多槽配置可能会将不同作业的任务安排到一个 TM。如果 TM 出现故障,例如,因为两个任务中的任何一个消耗了太多内存,两个作业都将重新启动。另一方面,每个 TM 运行一个插槽可能会留下更多未使用的内存。如果每个集群只运行一个作业,每个 TM 多个槽可能就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多