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

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

AKinesis Data Analytics he

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

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

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

  • 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 使用ParallelismParallelismPerKPU属性计算运行应用程序所需的 KPU,如下所示:

Allocated KPUs for the application = Parallelism/ParallelismPerKPU

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

应用程序的默认 KPU 限制为 32 个。有关如何申请提高此限额的说明,请参阅Service Quotas 中的 “申请提高限”。

更新应用程序的并行度

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

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" } } } }

自动扩展

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

  • 当您的 CPU 使用率在 75% 或以上持续 15 分钟时,您的应用程序会向上扩展(提高并行度)。

  • 当 CPU 使用率在六小时内保持在 10% 以下时,您的应用程序会向下扩展(降低并行度)。

Kinesis Data Analytics 不会将应用程序的CurrentParallelism价值降低到低于应用程序的Parallelism设置。

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

您可以使用 AutoScalingEnabled 属性(FlinkApplicationConfiguration 的一部分)启用或禁用自动扩展行为。您的Amazon账户需要为 Kinesis Data Analytics 预置的 KPU 付费,这取决于您的应用程序parallelismparallelismPerKPU设置。活动激增会增加您的 Kinesis Data Analytics 成本。

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

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

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

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

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

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

最大并行度注意事项

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

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

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

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

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