【问题标题】:Apache Flink Resource Planning best practicesApache Flink 资源规划最佳实践
【发布时间】:2020-07-30 20:09:14
【问题描述】:

我正在寻找建议/最佳实践,以确定在 Flink 集群上部署流式作业所需的最佳资源。

资源是

  1. 没有。每个 TaskManager 的任务槽数
  2. TaskManager 的最佳内存分配
  3. 最大并行度

【问题讨论】:

    标签: apache-flink flink-streaming flink-cep flink-sql


    【解决方案1】:

    这个blog post 提供了一些关于如何调整大小的想法。它旨在将正在开发的 Flink 应用程序转移到生产环境中。

    在此之前我不知道有什么资源有助于调整大小,因为作业的拓扑结构会产生巨大影响。因此,您通常会从 PoC 和低数据量开始,然后推断您的发现。

    内存设置在Flink docs 中有描述。我也会为您的 Flink 版本使用适当的页面,因为它最近发生了变化。

    【讨论】:

      【解决方案2】:
      1. 每个任务管理器的任务槽数

      每个 TM 一个插槽是作为起点的粗略经验法则,但您可能希望将 TM 的数量保持在 100 以下左右。这是因为如果检查点协调器必须管理太多不同的 TM,它最终会遇到困难。与基于堆的状态后端相比,使用 RocksDB 运行每个 TM 有很多插槽的效果更好,因为使用 RocksDB,状态是堆外的——状态在堆上,使用大量插槽运行会增加显着 GC 暂停的可能性。

      1. 最大并行度

      默认值为 128。更改此参数很痛苦,因为它已融入每个检查点和保存点。但是让它比必要的更大会带来一些成本(在内存/性能方面)。让它足够大,您永远不必更改它,但不要更大。

      【讨论】:

      • 我们也可以说 FS 状态后端在这种情况下也比基于堆的状态后端工作得更好吗?
      • FS 状态后端是基于堆的状态后端之一。
      猜你喜欢
      • 2016-11-18
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      • 1970-01-01
      • 2010-12-24
      • 2015-11-18
      • 2020-04-30
      相关资源
      最近更新 更多