在 Apache Flink 的托管服务中实现应用程序扩展 - Managed Service for Apache Flink

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

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

在 Apache Flink 的托管服务中实现应用程序扩展

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

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

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

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

  • ParallelismPerKPU— 使用此属性设置应用程序的每个 Kinesis 处理单元 (KPU) 可以安排的并行任务数。默认值为 1,最大值为 8。对于具有阻塞操作的应用程序(例如,I/O),值越高ParallelismPerKPU,则KPU资源得到充分利用。

注意

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

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

分配 Kinesis 处理单元

适用于 Apache Flink 的托管服务将容量配置为。KPUs单片KPU可为您提供 1 v CPU 和 4 GB 的内存。每KPU分配一次,还会提供 50 GB 的运行应用程序存储空间。

适用于 Apache Flink KPUs 的托管服务使用ParallelismParallelismPerKPU属性计算运行应用程序所需的资源,如下所示:

Allocated KPUs for the application = Parallelism/ParallelismPerKPU

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

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

注意

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

更新应用程序的并行度

本节包含设置应用程序并行度的API操作请求示例。有关如何在API操作中使用请求块的更多示例和说明,请参阅适用于 Apache 的托管服务 Flink 示例代码 API

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

{ "ApplicationName": "string", "RuntimeEnvironment":"FLINK-1_18", "ServiceExecutionRole":"arn:aws:iam::123456789123:role/myrole", "ApplicationConfiguration": { "ApplicationCodeConfiguration":{ "CodeContent":{ "S3ContentLocation":{ "BucketARN":"arn:aws:s3:::amzn-s3-demo-bucket", "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" } } } }

maxParallelism 注意事项

Flink 作业可以扩展的最大并行度受该作业maxParallelism所有操作员的最小并行度限制。例如,如果你有一个简单的作业,只有一个源和一个接收器,而源有 16,接收器有 8,那么应用程序的并行度就不能超过 8。maxParallelism

要了解如何计算运算符maxParallelism的默认值以及如何覆盖默认值,请参阅 Apache F link 文档中的设置最大并行度

作为基本规则,请注意,如果您没有maxParallelism为任何运算符定义,并且在启动应用程序时并行度小于或等于 128,则所有运算符的并行度都将为 maxParallelism 128。

注意

作业的最大并行度是扩展应用程序时保持状态的并行度上限。

如果您修改maxParallelism现有应用程序,则该应用程序将无法从以前使用旧快照拍摄的快照重新启动maxParallelism。您只能在没有快照的情况下重新启动应用程序。

如果您计划将应用程序扩展到大于 128 的并行度,则必须在应用程序maxParallelism中明确设置。

  • 自动缩放逻辑可以防止将 Flink 作业扩展到超过任务最大并行度的并行度。

  • 如果您使用自定义自动缩放或计划扩展,请对其进行配置,使其不会超过作业的最大并行度。

  • 如果您手动将应用程序扩展到超出最大并行度,则应用程序将无法启动。