本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Apache Flink 的 Kinesis Data Analytics 中的应用程序扩展
您可以为 Apache Flink 配置 Amazon Kinesis Data Analytics parallel 执行任务和资源分配,以实施扩展。有关 Apache Flink 如何计划 parallel 任务实例的信息,请参阅并行执行
配置应用程序 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.
有关为特定运算符设置任务并行度的信息,请参阅设置并行度:运算符
分配 Kinesis 处理单元
Kinesis Data Analytics 将容量预置为 KPU。一个 KPU 可为您提供 1 个 vCPU 和 4 GB 内存。对于分配的每个 KPU,还提供了 50 GB 运行的应用程序存储。
Kinesis Data Analytics 计算运行应用程序所需的 KPU,使用Parallelism和ParallelismPerKPU属性,如下所示:
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 将被收费,Kinesis Data Analytics 预置的 KPU 取决于应用程序的parallelism和parallelismPerKPU设置。活动高峰将会增加您的 Kinesis Data Analytics 成本。
有关定价的信息,请参阅 Amazon Kinesis Data Analytics 定价
请注意有关应用程序扩展的以下内容:
默认情况下,将会启用自动扩展。
缩放不适用于 Studio 笔记本。但是,如果将 Studio 笔记本作为持久状态的应用程序部署,则扩展将应用于已部署的应用程序。
应用程序的默认限制为 32 个 KPU。有关更多信息,请参阅 配额。
在自动扩展更新应用程序并行度时,应用程序将会发生停机。为了避免这种停机,请执行以下操作:
禁用自动扩展
配置应用程序
parallelism和parallelismPerKPU使用UpdateApplicationaction. 有关设置应用程序的并行度设置的更多信息,请参阅下面的更新应用程序的并行度。定期监控应用程序的资源使用情况,以验证应用程序是否具有适合其工作负载的并行度设置。有关监控分配资源使用情况的信息,请参阅查看 Kinesis Data Analytics 指标和维度。
MaxParalism 注意事项
AutoScale 逻辑将防止将 Flink 作业扩展为可能会干扰作业和操作员的并行度
maxParallelism. 例如,如果一个简单的作业只有来源和来源所有的汇maxParallelism16 和sink有 8 个,我们不会自动将作业扩展到 8 以上。如果
maxParallelism未为作业设置,Flink 将默认设置为 128。因此,如果您认为作业需要以高于 128 的并行度运行,则必须为应用程序设置该数字。如果你希望看到你的工作自动缩放但没有看到它,请确保
maxParallelism值允许它。
有关更多信息,请参阅Apache Flink 的增强监控和自动缩放
有关示例,请参阅 。kda flink-app 自动缩放