适用于 Apache Flink 的 BigQuery 引擎自动扩缩

自动扩缩功能使适用于 Apache Flink 的 BigQuery 引擎能够为作业选择适当数量的任务槽,并根据需要添加和移除槽。自动扩缩器会计算每个 Flink 作业所需的任务槽数,目的是在使用最少必要资源的情况下跟上输入负载。

并行性是指在任何给定时间以最有效率的方式处理数据所需的任务槽数估算值。如需确定作业所需的任务槽数,适用于 Apache Flink 的 BigQuery 引擎会使用一种算法来分析作业中每个任务的并行度。

结果受每个作业、每个部署和每个项目的资源限制所限。您可以配置一些限制,例如配额。其他限制取决于项目配额限制。

作业默认使用自动扩缩功能。您可以为作业设置槽数下限和上限,也可以为作业停用自动扩缩功能,并使用固定数量的槽。

优势

自动扩缩具有以下潜在优势。

  • 让适用于 Apache Flink 的 BigQuery 引擎作业能够更高效地处理数据。
  • 通过调整可用于并行运行任务的槽数来改进并行处理。
  • 促进高效使用资源,这可能会降低您的费用。

支持和限制

  • 支持流式处理流水线。
  • 扩容受槽位配额限制。配额是在部署级别(而非作业级别)强制执行的。
  • 您为部署分配的任务槽数不得超过Google Cloud 项目中可用的任务槽数。
  • 适用于 Apache Flink 的 BigQuery 引擎自动扩缩器最适合与 Apache Kafka 来源搭配使用。对于其他 I/O,请实现新的 Apache Flink 源接口Apache Flink 标准化连接器指标

工作原理

自动调优会根据资源要求动态扩缩或缩减作业使用的任务槽数。增加槽数可让更多任务并行运行。当任务完成且不再需要槽时,槽数会缩容。算法可确定每个作业所需的任务槽数。

为了确定适当的槽数,适用于 Apache Flink 的 BigQuery 引擎使用以下指标:

  • 每秒处理数据所花费的平均毫秒数(不包括背压)
  • 每秒传入的记录平均数
  • 每秒传出的记录平均数
  • 积压大小,即待处理记录的数量
  • 积压工作量的增长率
  • 来源可以并行处理的分块总数

配置自动扩缩

如需配置自动扩缩,请在部署和作业中设置以下参数。

部署

创建部署时,请设置槽数上限。此值限制了部署中所有作业可用的槽总数。

gcloud

如需在创建部署时设置槽数量上限,请将 gcloud alpha managed-flink deployments create gcloud CLI 命令与 max-slots 参数搭配使用。

gcloud alpha managed-flink deployments create ... \
  --max-slots=SLOT_NUMBER

SLOT_NUMBER 替换为分配给部署的槽数。如果该值大于 Google Cloud 项目中可用的任务槽数量,系统会拒绝该请求。

求职招聘

创建新作业时,系统会默认启用自动扩缩。为作业设置槽数下限和上限。

gcloud

创建作业时,请使用 gcloud alpha managed-flink jobs create gcloud CLI 命令,并附带以下参数:

gcloud alpha managed-flink jobs create ... \
--min-parallelism=MINIMUM_SLOTS \
--max-parallelism=MAXIMUM_SLOTS

执行以下变量替换操作:

  • MINIMUM_SLOTS:作业可用的任务槽数下限
  • MAXIMUM_SLOTS:作业可用的任务槽数上限

如果您在现有部署中创建作业,则这些值不得超过分配给该部署的槽数上限。

停用自动扩缩

您可以在创建作业时停用自动扩缩功能,改为为作业分配固定数量的任务槽。

gcloud

如需创建停用自动扩缩功能的作业,请使用 gcloud alpha managed-flink jobs create gcloud CLI 命令,并附带以下参数:

gcloud alpha managed-flink jobs create ... \
  --autotuning-mode=fixed \
  --parallelism=SLOTS \

SLOTS 替换为您的作业可用的任务槽数。

更新自动扩缩

gcloud

如需使用 gcloud CLI 更新作业的自动扩缩设置,请使用 gcloud alpha managed-flink jobs update 命令。

如需更改作业可用的任务槽数下限和上限,请执行以下操作:

gcloud alpha managed-flink jobs update JOB_ID \
  --project=PROJECT_ID \
  --location=REGION \
  --min-parallelism=MINIMUM_SLOTS \
  --max-parallelism=MAXIMUM_SLOTS

如需停用自动扩缩,请执行以下操作:

gcloud alpha managed-flink jobs update JOB_ID \
  --project=PROJECT_ID \
  --location=REGION \
  --autotuning-mode=fixed \
  --parallelism=SLOTS

执行以下变量替换操作:

  • JOB_ID:适用于 Apache Flink 的 BigQuery 引擎作业的 ID
  • PROJECT_ID:适用于 Apache Flink 的 BigQuery 引擎项目 ID
  • REGION:适用于 Apache Flink 的 BigQuery 引擎作业的区域
  • MINIMUM_SLOTS:作业可用的任务槽数下限
  • MAXIMUM_SLOTS:作业可用的任务槽数上限
  • SLOTS:作业可用的任务槽数

验证是否已启用自动扩缩

控制台

使用 Google Cloud 控制台查看是否已启用自动扩缩功能。

  1. 在 Google Cloud 控制台中,打开作业列表。

转到作业

  1. 如需打开作业详情页面,请点击作业的名称。

  2. 启用自动扩缩后,作业信息面板中的横向自动扩缩政策会设置为基于吞吐量

gcloud

如需使用 gcloud CLI 查看是否启用了自动扩缩,请使用 gcloud alpha managed-flink jobs describe 命令。

gcloud alpha managed-flink jobs describe \
  JOB_ID \
  --location=REGION

替换以下内容:

  • JOB_ID:适用于 Apache Flink 的 BigQuery 引擎作业的 ID
  • REGION:适用于 Apache Flink 的 BigQuery 引擎作业的所在区域

启用自动扩缩后,响应将包含类似于以下示例的行:

autotuningConfig:
  throughputBased:
    maxParallelism: NUMBER
    minParallelism: NUMBER
    parallelism: NUMBER

监控

使用 Google Cloud 控制台监控自动扩缩。您可以在适用于 Apache Flink 的 BigQuery 引擎监控界面的作业详情页面上的指标标签页中查看自动扩缩监控图表。这些图表显示作业持续时间内的指标,并包含以下信息:

  • 当前并行数量
  • 建议的并行数量
  • 允许的任务槽数下限和上限

如需了解详情,请参阅自动扩缩指标

适用于 Apache Flink 的 BigQuery 引擎作业级自动扩缩指标也会导出到 Cloud Monitoring。使用 Metrics Explorer 创建图表