Amazon Managed Service for Apache Flink 之前称为 Amazon Kinesis Data Analytics for Apache Flink。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Apache Flink 的托管服务中使用自动缩放
Managed Service for Apache Flink 可以弹性地扩展应用程序的并行度,以适应大多数情况下源的数据吞吐量和操作员的复杂性。默认情况下,将会启用自动扩展。适用于 Apache Flink 的托管服务监控应用程序的资源 (CPU) 使用情况,并相应地弹性地向上或向下扩展应用程序的并行度:
如果 CloudWatch 指标最大值在 15 分钟内大于 75% 或以上,
containerCPUUtilization
则您的应用程序会向上扩展(增加并行度)。这意味着当连续有 15 个数据点,其中 1 分钟周期等于或大于 75% 时,就会启动ScaleUp
操作。一个ScaleUp
动作会使你的应用程序翻CurrentParallelism
一番。ParallelismPerKPU
未被修改。结果,分配的数量KPUs也翻了一番。当您的CPU使用量在六小时内保持在 10% 以下时,您的应用程序会缩小规模(降低并行度)。这意味着当连续有 360 个数据点,其中 1 分钟周期小于 10% 时,就会启动
ScaleDown
操作。ScaleDown
操作将应用程序的并行度减半(四舍五入)。ParallelismPerKPU
未修改,分配的数量KPUs也减半(向上舍入)。
注意
可以引用最大containerCPUUtilization
超过 1 分钟的时间段来查找与用于缩放操作的数据点的相关性,但没有必要反映操作初始化的确切时刻。
Managed Service for Apache Flink 不会将应用程序的CurrentParallelism
价值降低到低于应用程序设置的Parallelism
值。
当 Managed Service for Apache Flink 正在扩展您的应用程序时,它将处于状态。AUTOSCALING
您可以使用 DescribeApplication或 ListApplications操作检查当前的应用程序状态。当服务扩展您的应用程序时,您可以使用的唯一有效API操作是 StopApplication将Force
参数设置为true
。
您可以使用 AutoScalingEnabled
属性(FlinkApplicationConfiguration
的一部分)启用或禁用自动扩展行为。您的 AWS 账户将按照 Apache Flink 提供的托管服务收费,这取决于您的应用程序parallelism
和parallelismPerKPU
设置。KPUs活动激增会增加您的 Managed Service for Apache Flink 费用。
有关定价的更多信息,请参阅Amazon Managed Service for Apache Flink 定价
请注意有关应用程序扩展的以下内容:
默认情况下,将会启用自动扩展。
伸缩不适用于 Studio 笔记本。但是,如果您将 Studio 笔记本部署为具有持久状态的应用程序,则伸缩将适用于已部署的应用程序。
您的应用程序的默认限制为 64 KPUs。有关更多信息,请参阅 适用于 Apache Flink 和 Studio 笔记本配额的托管。
在自动扩展更新应用程序并行度时,应用程序将会发生停机。为了避免这种停机,请执行以下操作:
禁用自动扩展
使用UpdateApplication操作配置您的应用程序
parallelism
和parallelismPerKPU
。有关设置应用程序并行度设置的更多信息,请参阅。更新应用程序的并行度定期监控应用程序的资源使用情况,以验证应用程序是否具有适合其工作负载的并行度设置。有关监控分配资源使用情况的信息,请参阅适用于 Apache Flink 的托管服务中的指标和维度。
实现自定义自动缩放
如果您想对自动缩放进行更精细的控制或使用其他触发指标containerCPUUtilization
,则可以使用以下示例:
-
此示例说明了如何使用与 Apache Flink 应用程序不同的 CloudWatch 指标(包括来自亚马逊MSK和亚马逊 Kinesis Data Streams 的指标,用作源或接收器)来扩展适用于 Apache Flink 的托管服务 Flink 应用程序。
有关更多信息,请参阅 Apache Flink 的增强监控和自动扩展
实现定时自动缩放
如果您的工作负载会随着时间的推移遵循可预测的配置文件,那么您可能更愿意先发制人地扩展 Apache Flink 应用程序。这会按计划的时间扩展您的应用程序,而不是根据指标进行被动扩展。要设置在一天中的固定时间向上和向下扩展,可以使用以下示例: