Managed Service for Apache Flink 中的应用程序扩展 - Managed Service for Apache Flink
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon Managed Service for Apache Flink 之前称为 Amazon Kinesis Data Analytics for Apache Flink。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Managed Service for Apache Flink 中的应用程序扩展

您可以为 Amazon Managed Service for Apache Flink 配置任务并行执行和资源分配以实施扩展。有关 Apache Flink 如何调度任务并行实例的信息,请参阅《Apache Flink 文档》中的并行执行

配置应用程序并行度和 KPU ParallelismPer

您可以使用以下ParallelismConfiguration属性为 Managed Service for Apache Flink 应用程序任务(例如从源读取或执行运算符)配置并行执行:

  • Parallelism — 使用该属性设置默认 Apache Flink 应用程序并行度。所有操作符、源和接收器以该并行度执行,除非在应用程序代码中覆盖它们。默认值为 1,最大值为 256

  • ParallelismPerKPU — 使用此属性可设置应用程序的每个 Kinesis 处理单元 (KPU) 可以计划的并行任务数。默认值为 1,最大值为 8。对于具有阻止操作(例如,I/O)的应用程序,较高的 ParallelismPerKPU 值导致完全使用 KPU 资源。

注意

Parallelism 的限制等于 ParallelismPerKPU 乘以 KPU 限制(默认值为 64)。可以请求增加限制以增加 KPU 限制。有关如何请求增加限制的说明,请参阅 服务限额中的“请求增加限制”。

有关为特定运算符设置任务并行度的信息,请参阅 Apache Flink 文档中的设置并行度:运算符。

分配 Kinesis 处理单元

Managed Service for Apache Flink 将容量配置为 KPU。一个 KPU 可为您提供 1 个 vCPU 和 4 GB 内存。对于分配的每个 KPU,还提供了 50 GB 运行的应用程序存储。

Managed Service for Apache Flink 使用ParallelismParallelismPerKPU 属性计算运行应用程序所需的 KPU,如下所示:

Allocated KPUs for the application = Parallelism/ParallelismPerKPU

Managed Service for Apache Flink 快速为应用程序提供资源,以应对出现的吞吐量或处理活动高峰。在活动高峰过后,它逐渐从应用程序中删除资源。要禁止自动分配资源,请将 AutoScalingEnabled 值设置为 false,如后面的更新应用程序的并行度中所述。

应用程序的默认 KPU 限制为 64 个。有关如何请求增加限制的说明,请参阅 服务限额中的“请求增加限制”。

注意

出于编排目的,需要额外收取 KPU 费用。有关更多信息,请参阅 Managed Service for Apache Flink 定价

更新应用程序的并行度

本节包含设置应用程序并行度的 API 操作的示例请求。有关如何将请求块与 API 操作一起使用的更多示例和说明,请参阅Managed Service for Apache Flink API 示例代码

CreateApplication 操作的以下示例请求在您创建应用程序时设置并行度:

{ "ApplicationName": "string", "RuntimeEnvironment":"FLINK-1_15", "ServiceExecutionRole":"arn:aws:iam::123456789123:role/myrole", "ApplicationConfiguration": { "ApplicationCodeConfiguration":{ "CodeContent":{ "S3ContentLocation":{ "BucketARN":"arn:aws:s3:::mybucket", "FileKey":"myflink.jar", "ObjectVersion":"AbCdEfGhIjKlMnOpQrStUvWxYz12345" } }, "CodeContentType":"ZIPFILE" }, "FlinkApplicationConfiguration": { "ParallelismConfiguration": { "AutoScalingEnabled": "true", "ConfigurationType": "CUSTOM", "Parallelism": 4, "ParallelismPerKPU": 4 } } } }

UpdateApplication 操作的以下示例请求为现有的应用程序设置并行度:

{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 4, "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "ParallelismConfigurationUpdate": { "AutoScalingEnabledUpdate": "true", "ConfigurationTypeUpdate": "CUSTOM", "ParallelismPerKPUUpdate": 4, "ParallelismUpdate": 4 } } } }

UpdateApplication 操作的以下示例请求为现有的应用程序禁用并行度:

{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 4, "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "ParallelismConfigurationUpdate": { "AutoScalingEnabledUpdate": "false" } } } }

自动扩展

Managed Service for Apache Flink 可以弹性地扩展应用程序的并行度,以适应大多数情况下源的数据吞吐量和操作员的复杂性。Managed Service for Apache Flink 监控应用程序的资源 (CPU) 使用情况,并相应地弹性地向上或向下扩展应用程序的并行度:

  • 如果 CloudWatch 指标在 15 分钟内大于 75% 或以上,containerCPUUtilization则您的应用程序会向上扩展(增加并行度)。这意味着,当连续有 15 个数据点,其中 1 分钟周期等于或大于 75% 时,就会触发ScaleUp操作。

  • 当 CPU 使用率在六小时内保持在 10% 以下时,您的应用程序会缩小规模(降低并行度)。这意味着当 360 个连续数据点的 1 分钟周期小于 10% 时,就会触发该ScaleDown操作。

注意

可以引用最长containerCPUUtilization超过 1 分钟的时间段来查找与用于缩放操作的数据点的相关性,但没有必要反映触发操作的确切时刻。

Managed Service for Apache Flink 不会将应用程序的CurrentParallelism价值降低到低于应用程序设置的Parallelism值。

当 Managed Service for Apache Flink 正在扩展您的应用程序时,它将处于状态。AUTOSCALING您可以使用 DescribeApplication ListApplications操作检查当前的应用程序状态。当服务扩展您的应用程序时,您可以使用的唯一有效 API 操作是 StopApplicationForce参数设置为true

您可以使用 AutoScalingEnabled 属性(FlinkApplicationConfiguration 的一部分)启用或禁用自动扩展行为。您的Amazon帐户需要为 Managed Service for Apache Flink提供的 KPU 付费,这取决于您的应用程序parallelismparallelismPerKPU设置。活动激增会增加您的 Managed Service for Apache Flink 费用。

有关定价的更多信息,请参阅Amazon Managed Service for Apache Flink 定价

请注意有关应用程序扩展的以下内容:

  • 默认情况下,将会启用自动扩展。

  • 伸缩不适用于 Studio 笔记本。但是,如果您将 Studio 笔记本部署为具有持久状态的应用程序,则伸缩将适用于已部署的应用程序。

  • 应用程序的默认限制为 64 个 KPU。有关更多信息,请参阅 配额

  • 在自动扩展更新应用程序并行度时,应用程序将会发生停机。为了避免这种停机,请执行以下操作:

MaxParlelism 注意事项

  • 自动缩放逻辑可以防止将 Flink 任务扩展到并行度,从而干扰任务和操作员。maxParallelism例如,如果一个简单的任务只有一个源和一个接收器,其中源有 maxParallelism 16,sink有 8,那么我们就不会将任务自动缩放到 8 以上。

  • 如果没有maxParallelism为任务设置,Flink 将默认为 128。因此,如果您认为任务需要以高于 128 的并行度运行,则必须为应用程序设置该数字。

  • 如果您希望看到任务自动缩放,但却看不到自动缩放,请确保您的maxParallelism值允许。

有关更多信息,请参阅 Apache Flink 的增强监控和自动扩展

有关示例,请参阅 kda-flink-app-autoscaling