flink 的 taskmanager 和 slot 在 yarn 上的平衡是多少

what the balance of flink's taskmanager and slot count on yarn

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

示例:

  1. 为每个 TaskManager 设置 2 个插槽,然后 yarn 会 运行 250 个 TaskManager。
  2. 为每个 TaskManager 设置 50 个插槽,而 yarn 会 运行 10 个 TaskManager。

哪一个会有击球表现?

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

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

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