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 使用Parallelism
和ParallelismPerKPU
属性计算运行应用程序所需的 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 操作是 StopApplication将Force
参数设置为true
。
您可以使用 AutoScalingEnabled
属性(FlinkApplicationConfiguration
的一部分)启用或禁用自动扩展行为。您的Amazon帐户需要为 Managed Service for Apache Flink提供的 KPU 付费,这取决于您的应用程序parallelism
和parallelismPerKPU
设置。活动激增会增加您的 Managed Service for Apache Flink 费用。
有关定价的更多信息,请参阅Amazon Managed Service for Apache Flink 定价
请注意有关应用程序扩展的以下内容:
默认情况下,将会启用自动扩展。
伸缩不适用于 Studio 笔记本。但是,如果您将 Studio 笔记本部署为具有持久状态的应用程序,则伸缩将适用于已部署的应用程序。
应用程序的默认限制为 64 个 KPU。有关更多信息,请参阅 配额。
在自动扩展更新应用程序并行度时,应用程序将会发生停机。为了避免这种停机,请执行以下操作:
禁用自动扩展
使用UpdateApplication操作配置您的应用程序
parallelism
和parallelismPerKPU
。有关设置应用程序的并行度设置的更多信息,请参阅下面的更新应用程序的并行度。定期监控应用程序的资源使用情况,以验证应用程序是否具有适合其工作负载的并行度设置。有关监控分配资源使用情况的信息,请参阅查看 Managed Service for Apache Flink中的指标和维度。
MaxParlelism 注意事项
自动缩放逻辑可以防止将 Flink 任务扩展到并行度,从而干扰任务和操作员。
maxParallelism
例如,如果一个简单的任务只有一个源和一个接收器,其中源有maxParallelism
16,sink
有 8,那么我们就不会将任务自动缩放到 8 以上。如果没有
maxParallelism
为任务设置,Flink 将默认为 128。因此,如果您认为任务需要以高于 128 的并行度运行,则必须为应用程序设置该数字。如果您希望看到任务自动缩放,但却看不到自动缩放,请确保您的
maxParallelism
值允许。
有关更多信息,请参阅 Apache Flink 的增强监控和自动扩展
有关示例,请参阅 kda-flink-app-autoscaling