使用增强型自动缩放来优化增量实时表管道的群集利用率

本文介绍如何使用增强型自动缩放来优化 Azure Databricks 上的 Delta Live Tables 管道。

什么是增强型自动缩放?

Databricks 增强型自动缩放可以根据工作负载量自动分配群集资源,从而优化群集利用率,并尽量减轻对管道数据处理延迟的影响。

增强型自动缩放改进了 Azure Databricks 群集自动缩放功能,具有以下特点:

  • 增强型自动缩放实现流式处理工作负载的优化,并添加了增强功能来提高批处理工作负载的性能。 增强型自动缩放通过在工作负荷变化时添加或删除计算机来优化成本。
  • 增强型自动缩放主动关闭未充分利用的节点,同时保证在关闭期间不会有任务失败。 仅当节点处于空闲状态时,现有群集自动缩放功能才会纵向缩减节点。

在 Delta Live Tables UI 中创建新管道时,增强型自动缩放是默认的自动缩放模式。 可以通过在 UI 中编辑管道设置来为现有管道启用增强型自动缩放。 还可以在使用 Delta Live Tables API 创建或编辑管道时启用增强型自动缩放。

增强型自动缩放使用哪些指标来做出纵向扩展或纵向缩减的决定?

增强型自动缩放使用两个指标来决定纵向扩展或纵向缩减:

  • 任务槽利用率:这是繁忙任务槽数群集中可用的总任务槽数的平均比率。
  • 任务队列大小:这是任务槽中等待执行的任务数。

增强型自动缩放功能适用于哪种类型的管道?

增强型自动缩放适用于使用经典计算的管道。

管道计算 是否启用了增强型自动缩放?
经典(用户配置) 默认启用,但可以禁用

适用于经典管道的增强型自动缩放

对于使用经典计算的 Delta Live Tables 管道,在 Delta Live Tables UI 中创建新管道时,增强型自动缩放是默认的自动缩放模式。 通过编辑 UI 中的管道设置,可以为现有的经典管道启用增强型自动缩放。 当使用 Delta Live Tables API 创建或编辑经典管道时,也可以启用增强型自动缩放。

为使用经典计算的 DLT 管道启用增强型自动缩放

注意

由于计算资源会自动针对无服务器 DLT 管道进行优化,因此为管道选择“无服务器”时,Databricks 增强型自动缩放的设置不可用。

若要使用增强型自动缩放,请执行下列操作之一:

  • 在 Delta Live Tables UI 中创建管道或编辑管道时,将“群集模式”设置为“增强型自动缩放”。
  • autoscale 设置添加到管道群集配置,并将 mode 字段设置为 ENHANCED。 请参阅配置计算设置

为生产管道配置增强型自动缩放时,请遵循以下准则:

  • Min workers 设置保留为默认值。
  • Max workers 设置为基于预算和管道优先级的值。

以下示例配置一个增强型自动缩放群集,其中最少包含 5 个工作器,最多包含 10 个工作器。 max_workers 必须大于或等于 min_workers

注意

  • 增强型自动缩放仅适用于 updates 群集。 现有的自动缩放功能用于 maintenance 群集。
  • autoscale 配置有两种模式:
{
  "clusters": [
    {
      "autoscale": {
        "min_workers": 5,
        "max_workers": 10,
        "mode": "ENHANCED"
      }
    }
  ]
}

如果管道配置为适合连续执行,则在自动缩放配置更改后,管道将自动重启。 重启后,预期有短暂的一段时间延迟会提高。 经过短暂的延迟提高之后,群集大小将根据 autoscale 配置更新,管道延迟将恢复为之前的延迟特性。

限制使用增强型自动缩放的经典管道的成本

对于使用增强型自动缩放的经典管道,如果接受更高的性能延迟,则可以降低成本。 通过调整“管道”计算窗格中的 Max workers 参数,可以根据特定需求实现更好的成本-延迟权衡。

管道 UI 中的“计算”窗格,可以在其中设置自动缩放的最大辅助角色

监视启用了“增强型自动缩放”的经典管道

可以使用 Delta Live Tables 用户界面中的事件日志来监视经典管道的增强型自动缩放指标。 增强型自动缩放事件的事件类型为 autoscale。 下面是示例事件:

事件 消息
已提出群集调整大小请求 Scaling [up or down] to <y> executors from current cluster size of <x>
群集调整大小请求已成功 Achieved cluster size <x> for cluster <cluster-id> with status SUCCEEDED
群集调整大小请求已部分成功 Achieved cluster size <x> for cluster <cluster-id> with status PARTIALLY_SUCCEEDED
群集调整大小请求失败 Achieved cluster size <x> for cluster <cluster-id> with status FAILED

还可以通过直接查询事件日志来查看增强型自动缩放事件: