

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

# 在 Flink 应用程序中使用 Autoscaler
<a name="jobruns-flink-autoscaler"></a>

Operator Autoscaler 可以从 Flink 任务中收集指标，并自动调整任务顶点级别的并行度，从而帮助缓解反向压力。配置可能类似于如下示例：

```
apiVersion: flink.apache.org/v1beta1
kind: FlinkDeployment
metadata:
  ...
spec:
  ...
  flinkVersion: v1_18
  flinkConfiguration:
    job.autoscaler.enabled: "true"
    job.autoscaler.stabilization.interval: 1m
    job.autoscaler.metrics.window: 5m
    job.autoscaler.target.utilization: "0.6"
    job.autoscaler.target.utilization.boundary: "0.2"
    job.autoscaler.restart.time: 2m
    job.autoscaler.catch-up.duration: 5m
    pipeline.max-parallelism: "720"
  ...
```

此配置使用最新版本的 Amazon EMR 的默认值。如果使用其他版本，值可能会有所不同。

**注意**  
从 Amazon EMR 7.2.0 开始，无需在配置中包含前缀 `kubernetes.operator`。如果使用 7.1.0 或更低版本，则必须在每次配置前使用前缀。例如，必须指定 `kubernetes.operator.job.autoscaler.scaling.enabled`。

以下是 Autoscaler 的配置选项。
+ `job.autoscaler.scaling.enabled`：指定是否允许 Autoscaler 执行顶点缩放。默认值为 `true`。如果禁用此配置，Autoscaler 只会收集指标并评估每个顶点的建议并行度，但不会升级作业。
+ `job.autoscaler.stabilization.interval`：不会执行新扩展的稳定期。默认值为 5 分钟。
+ `job.autoscaler.metrics.window`：扩展指标聚合窗口大小。窗口越大，就越流畅、越稳定，但 Autoscaler 对负载突变做出反应的速度可能会变慢。默认值为 15 分钟。建议使用 3 到 60 分钟之间的值进行实验。
+ `job.autoscaler.target.utilization`：提供稳定任务性能和一定负载波动缓冲能力的目标顶点利用率。默认情况下，作业顶点 utilization/load 的`0.7`目标为 70%。
+ `job.autoscaler.target.utilization.boundary`：目标顶点利用率边界，用作额外的缓冲，避免在负载波动时立即扩展。默认值为 `0.3`，即在触发缩放操作之前，允许与目标利用率有 30% 的偏差。
+ `ob.autoscaler.restart.time`：重新启动应用程序的预计时间。默认值为 5 分钟。
+ `job.autoscaler.catch-up.duration`：赶上进度的预计时间，即在扩展操作完成后完全处理积压工作的时间。默认值为 5 分钟。通过缩短赶上进度的持续时间，Autoscaler 必须为扩展操作预留更多额外容量。
+ `pipeline.max-parallelism`：Autoscaler 可以使用的最大并行度。如果该限值高于 Flink 配置中设定的最大并行度或直接在每个 Operator 上设定的最大并行度，则 Autoscaler 会忽略此限值。默认值为 -1。请注意，Autoscaler 将并行度计算为最大并行度数的除数，因此建议选择具有大量除数的最大并行度设置，而非依赖 Flink 提供的默认设置。建议对此配置使用 60 的倍数，例如 120、180、240、360、720。

有关详细配置的参考页面，请参阅 [Autoscaler configuration](https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main/docs/operations/configuration/#autoscaler-configuration)。