理想的任务槽数

时间:2021-05-25 14:15:12

标签: apache-flink flink-streaming

我们在 v1.13.0 上开发了一个 Flink 应用程序并将其部署在 Kubernetes 上,该应用程序在 Kubernetes pod 上运行任务管理器实例。我不确定如何确定每个任务管理器实例上的理想任务槽数。我们应该在每个任务管理器/pod 上配置/选择一个任务槽,还是每个任务管理器/pod 或更多的两个槽。我们目前为每个任务管理器实例配置了两个任务槽,并想知道这是否是正确的选择/设置。运行一个任务槽与在任务管理器/pod 上运行两个或多个槽的优缺点是什么。

2 个答案:

答案 0 :(得分:2)

作为一般规则,对于容器化部署(如您的),每个 TM 一个插槽是一个很好的默认起点。这往往会使配置尽可能简单。

答案 1 :(得分:0)

取决于您预期的工作量、输入、状态大小。


是批处理还是流?

批处理:工作负载是否足够快?

流:工作压力大吗?

对于这些吞吐量限制,您可能需要增加 TM 的数量


状态大小:您如何处理数据?需要很多状态吗?

例如这个查询:

SELECT
  user_id,
  count(*)
FROM user_logins

需要一个与用户数量成正比的状态。

您可以在选项中调整 TM 的内存。

这是一个有用的链接:https://www.ververica.com/blog/how-to-size-your-apache-flink-cluster-general-guidelines


并发作业:这台机器是否未得到充分利用,您是否需要保留一个未使用的 TS 池来准备执行作业?

TM 的内存将在 TS 之间进行切片(确保它适合您的状态大小),但 CPU 将在空闲时共享。


除此之外,如果在一个 Pod 上的一个 TM 运行良好,那么您就无事可做。