【发布时间】:2020-07-30 20:09:14
【问题描述】:
我正在寻找建议/最佳实践,以确定在 Flink 集群上部署流式作业所需的最佳资源。
资源是
- 没有。每个 TaskManager 的任务槽数
- TaskManager 的最佳内存分配
- 最大并行度
【问题讨论】:
标签: apache-flink flink-streaming flink-cep flink-sql
我正在寻找建议/最佳实践,以确定在 Flink 集群上部署流式作业所需的最佳资源。
资源是
【问题讨论】:
标签: apache-flink flink-streaming flink-cep flink-sql
这个blog post 提供了一些关于如何调整大小的想法。它旨在将正在开发的 Flink 应用程序转移到生产环境中。
在此之前我不知道有什么资源有助于调整大小,因为作业的拓扑结构会产生巨大影响。因此,您通常会从 PoC 和低数据量开始,然后推断您的发现。
内存设置在Flink docs 中有描述。我也会为您的 Flink 版本使用适当的页面,因为它最近发生了变化。
【讨论】:
每个 TM 一个插槽是作为起点的粗略经验法则,但您可能希望将 TM 的数量保持在 100 以下左右。这是因为如果检查点协调器必须管理太多不同的 TM,它最终会遇到困难。与基于堆的状态后端相比,使用 RocksDB 运行每个 TM 有很多插槽的效果更好,因为使用 RocksDB,状态是堆外的——状态在堆上,使用大量插槽运行会增加显着 GC 暂停的可能性。
默认值为 128。更改此参数很痛苦,因为它已融入每个检查点和保存点。但是让它比必要的更大会带来一些成本(在内存/性能方面)。让它足够大,您永远不必更改它,但不要更大。
【讨论】: