Apache Flink 的 Kinesis Data Analytics - Amazon Kinesis Data Analytics
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

Apache Flink 的 Kinesis Data Analytics

您可以为 Amazon Kinesis Data Analytics of Apache Flink 配置任务 parallel 执行和资源分配以实施扩展。有关 Apache Flink 如何计划 parallel 任务实例的信息,请参阅并行执行中的Apache Flink 文档.

配置应用程序 Parallelism 和 ParallelismPerKPU

您可以使用以下命令为 Kinesis Data Analytics 应用程序任务(例如从源代码读取或执行运算符)配置 parallel 行执行ParallelismConfiguration属性:

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

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

注意

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

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

分配 Kinesis 处理单元

Kinesis Data Analytics 以 KPU 形式预置容量。一个 KPU 可为您提供 1 个 vCPU 和 4 GB 内存。对于分配的每个 KPU,还提供了 50 GB 运行的应用程序存储。

使用 Kinesis Data Analytics 计算运行应用程序所需的 KPUParallelismParallelismPerKPU属性,如下所示:

Allocated KPUs for the application = Parallelism/ParallelismPerKPU

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

应用程序的默认 KPU 限制为 32 个。有关如何请求增加该限制的说明,请参阅中的 “请求增加限制”。Service Quotas.

更新应用程序的并行度

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

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

{ "ApplicationName": "string", "RuntimeEnvironment":"FLINK-1_13", "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" } } } }

自动扩展

Kinesis Data Analytics 可以灵活地扩展您的应用程序的并行度,以适应源数据的数据吞吐量,以及大多数情况下的操作符复杂性。Kinesis Data Analytics 可以监控应用程序的资源 (CPU) 使用情况,并相应地弹性地扩展应用程序的并行度:

  • 当 CPU 使用率保持在 75% 或以上 15 分钟时,您的应用程序可以扩展(增加并行度)。

  • 当 CPU 使用率在六个小时内保持在 10% 以下时,应用程序将缩小(减少并行度)。

Kinesis Data Analytics 不会减少你的应用程序CurrentParallelism价值低于你的应用程序Parallelism设置。

当 Kinesis Data Analytics 服务正在扩展您的应用程序时,它将在AUTOSCALING状态。您可以使用DescribeApplication要么ListApplications行动。服务正在扩展应用程序时,您唯一可以使用的有效 API 操作是StopApplication使用Force设置为true.

您可以使用 AutoScalingEnabled 属性(FlinkApplicationConfiguration 的一部分)启用或禁用自动扩展行为。您的AmazonKinesis Data Analytics 预置的 KPU 将根据帐户收费,KPU 取决于应用程序的parallelismparallelismPerKPU设置。活动高峰将会增加您的 Kinesis Data Analytics 成本。

有关定价的信息,请参阅 Amazon Kinesis Data Analytics 定价

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

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

  • 缩放不适用于 Studio 笔记本。但是,如果将 Studio 笔记本作为持久状态的应用程序部署,则扩展将应用于已部署的应用程序。

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

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

MAX 并行度注意事项

  • AutoScale 逻辑将防止将 Flink 作业扩展为可能会干扰作业和操作员的并行度maxParallelism. 例如,如果一个简单的作业只有源和来源所在的汇maxParallelism16 和sink有 8 个,我们不会自动将作业扩展到 8 以上。

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

  • 如果你希望看到你的工作自动缩放但没有看到它,请确保maxParallelism值允许它。