我在pre-job模式下在yarn上使用flink,yarn集群有500个vcore和2000G ram,flink app有大状态。 我想知道我应该如何设置插槽计数。设置大槽数和较少的 TaskManager 数,还是较少的槽数和大的 TaskManager 数?
示例:
哪一个会有连击表现?
答案 0 :(得分:0)
这取决于。部分取决于您使用的状态后端,以及“更好的性能”对您的应用程序意味着什么。您运行的是批处理工作负载还是流式工作负载也会有所不同,而且作业的拓扑结构也可能是一个因素。
如果您使用 RocksDB 作为状态后端,那么使用更少、更大的任务管理器可能是可行的方法。有了堆上的状态,较大的任务管理器更有可能因显着的 GC 暂停而中断处理,这就需要有更多、更小的 TM。但这主要影响流式作业的最坏情况延迟,因此如果您正在运行批处理作业,或者只关心流式吞吐量,那么这可能不值得考虑。
可以优化同一 TM 中槽之间的通信,但如果您的工作不进行任何槽间通信,则这不是一个因素。