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