返回介绍

生产准备清单

发布于 2025-05-02 18:19:19 字数 2432 浏览 0 评论 0 收藏

生产准备清单

此生产准备清单的目的是提供重要的配置选项概述,如果您计划将 Flink 作业投入 生产 ,则需要 仔细考虑 。对于大多数这些选项,Flink 提供开箱即用的默认设置,以便更轻松地使用和采用 Flink。对于许多用户和场景,这些默认值是开发的良好起点,并且完全足以用于“一次性”作业。

但是,一旦您计划将 Flink 应用程序投入生产,通常会增加需求。例如,您希望您的工作(重新)可扩展,并为您的工作和新的 Flink 版本提供良好的升级故事。

在下文中,我们提供了一系列配置选项,您应该在作业投入生产之前检查这些选项。

明确地为 算子设置最大并行度

最大并行度是 Flink 1.2 中新引入的配置参数,对 Flink 作业的(重新)可伸缩性具有重要意义。此参数可以按作业和/或每个算子的粒度设置,确定可以扩展 算子的最大并行度。重要的是要了解(截至目前) 没有办法改变 作业启动后的此参数,除了从头开始完全重新启动作业(即使用新状态,而不是从以前的检查点/保存点)。即使 Flink 将来会提供某种方法来改变现有保存点的最大并行度,您也可以假设对于大型状态,这可能是您想要避免的长时间运行 算子操作。此时,您可能想知道为什么不仅仅使用非常高的值作为此参数的默认值。这背后的原因是高最大并行度会对应用程序的性能甚至状态大小产生一些影响,因为 Flink 必须维护某些元数据,因为它能够重新调整大小,并且可以通过最大并行度来增加。通常,您应该选择足够高的最大并行度以满足您在可伸缩性方面的未来需求,但保持尽可能低可以提供稍好的性能。特别是,高于 128 的最大并行度通常会导致来自被 Keys 化后台的稍微更大的状态 SNAPSHOT。

请注意,最大并行度必须满足以下条件:

0 < parallelism <= max parallelism <= 2^15

您可以设置最大并行度 setMaxParallelism(int maxparallelism) 。默认情况下,Flink 将在作业首次启动时选择最大并行度作为并行度的函数:

  • 128 :对于所有并行度<= 128。
  • MIN(nextPowerOfTwo(parallelism + (parallelism / 2)), 2^15) :对于所有并行度> 128。

为算子设置 UUID

保存点 文档中所述,用户应为算子设置 uid。这些 算子 uid 对于 Flink 将 算子状态映射到 算子非常重要,而 算子状态对于保存点也是必不可少的。默认情况下,通过遍历 JobGraph 并散列某些 算子属性来生成 算子 uid。虽然从用户的角度来看这很舒服,但它也非常脆弱,因为对 JobGraph 的更改(例如,交换算子)将导致新的 UUID。为了建立稳定的映射,我们需要用户提供稳定的 算子 uid setUid(String uid)

选择状态后台

目前,Flink 的局限性在于它只能从保存点恢复保存点的相同状态后台的状态。例如,这意味着我们不能使用具有内存状态后台的保存点,然后将作业更改为使用 RocksDB 状态后台并恢复。虽然我们计划在不久的将来使后台可以互 算子操作,但它们还没有。这意味着在开始生产之前,您应该仔细考虑将哪个后台用于工作。

通常,我们建议使用 RocksDB,因为这是目前唯一支持大状态(即超出可用主内存的状态)和异步 SNAPSHOT 的状态后台。根据我们的经验,异步 SNAPSHOT 对于大型状态非常重要,因为它们不会阻止 算子,Flink 可以在不停止流处理的情况下编写 SNAPSHOT。但是,RocksDB 的性能可能比基于内存的状态后台更差。如果您确定您的状态永远不会超过主内存并阻止流处理写入它不是问题,您 可以考虑 不使用 RocksDB 后台。但是,在这一点上,我们 强烈建议 使用 RocksDB 进行生产。

配置 JobManager 高可用性(HA)

JobManager 协调每个 Flink 部署。它负责 调度 和 资源管理 。

默认情况下,每个 Flink 群集都有一个 JobManager 实例。这会产生 单点故障 (SPOF):如果 JobManager 崩溃,则无法提交新程序并且运行程序失败。

使用 JobManager High Availability,您可以从 JobManager 故障中恢复,从而消除 SPOF 。我们 强烈建议 您为生产配置 高可用性

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。