flink 的任务管理器和插槽数在纱线上的平衡是多少

时间:2021-07-13 09:50:05

标签: apache-flink yarn flink-streaming

我在pre-job模式下在yarn上使用flink,yarn集群有500个vcore和2000G ram,flink app有大状态。 我想知道我应该如何设置插槽计数。设置大槽数和较少的 TaskManager 数,还是较少的槽数和大的 TaskManager 数?

示例:

  1. 为每个 TaskManager 设置 2 个插槽,纱线将运行 250 个 TaskManager。
  2. 为每个 TaskManager 设置 50 个插槽,纱线将运行 10 个 TaskManager。

哪一个会有连击表现?

1 个答案:

答案 0 :(得分:0)

这取决于。部分取决于您使用的状态后端,以及“更好的性能”对您的应用程序意味着什么。您运行的是批处理工作负载还是流式工作负载也会有所不同,而且作业的拓扑结构也可能是一个因素。

如果您使用 RocksDB 作为状态后端,那么使用更少、更大的任务管理器可能是可行的方法。有了堆上的状态,较大的任务管理器更有可能因显着的 GC 暂停而中断处理,这就需要有更多、更小的 TM。但这主要影响流式作业的最坏情况延迟,因此如果您正在运行批处理作业,或者只关心流式吞吐量,那么这可能不值得考虑。

可以优化同一 TM 中槽之间的通信,但如果您的工作不进行任何槽间通信,则这不是一个因素。