我们在 v1.13.0 上开发了一个 Flink 应用程序并将其部署在 Kubernetes 上,该应用程序在 Kubernetes pod 上运行任务管理器实例。我不确定如何确定每个任务管理器实例上的理想任务槽数。我们应该在每个任务管理器/pod 上配置/选择一个任务槽,还是每个任务管理器/pod 或更多的两个槽。我们目前为每个任务管理器实例配置了两个任务槽,并想知道这是否是正确的选择/设置。运行一个任务槽与在任务管理器/pod 上运行两个或多个槽的优缺点是什么。
答案 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 运行良好,那么您就无事可做。