在 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。

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

在 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 作业扩展到超过任务最大并行度的并行度。

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

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