本文介绍如何使用增强的自动缩放来优化 Azure Databricks 上的 DLT 管道。
默认情况下,为所有新管道启用增强型自动缩放。 无服务器管道还使用自动垂直扩展。 请参阅 什么是垂直自动缩放?。
Databricks 增强型自动缩放可以根据工作负载量自动分配群集资源,从而优化群集利用率,并尽量减轻对管道数据处理延迟的影响。
增强型自动缩放改进了 Azure Databricks 群集自动缩放功能,具有以下特点:
- 增强型自动缩放实现流式处理工作负载的优化,并添加了增强功能来提高批处理工作负载的性能。 增强型自动缩放通过在工作负荷变化时添加或删除计算机来优化成本。
- 增强型自动缩放主动关闭未充分利用的节点,同时保证在关闭期间不会有任务失败。 仅当节点处于空闲状态时,现有群集自动缩放功能才会纵向缩减节点。
增强型自动缩放是在 DLT UI 中创建新管道时的默认自动缩放模式。 可以通过在 UI 中编辑管道设置来为现有管道启用增强型自动缩放。 还可以使用 DLT API 创建或编辑管道时启用增强的自动缩放。
增强型自动缩放使用两个指标来决定纵向扩展或纵向缩减:
- 任务槽利用率:这是繁忙任务槽数与群集中可用的总任务槽数的平均比率。
- 任务队列大小:这是任务槽中等待执行的任务数。
增强型自动缩放是在 DLT UI 中创建新管道时的默认自动缩放模式。 可以通过在 UI 中编辑管道设置来为现有管道启用增强型自动缩放。 还可以在使用 DLT API 创建或编辑管道时启用增强的自动缩放。
若要使用增强型自动缩放,请执行下列操作之一:
- 在 DLT UI 中创建或编辑管道时,将 群集模式 设置为 增强的自动缩放 。
- 将
autoscale
设置添加到管道群集配置,并将mode
字段设置为ENHANCED
。 请参阅为 DLT 管道配置计算。
为生产管道配置增强型自动缩放时,请遵循以下准则:
- 将
Min workers
设置保留为默认值。 - 将
Max workers
设置为基于预算和管道优先级的值。
以下示例配置一个增强型自动缩放群集,其中最少包含 5 个工作器,最多包含 10 个工作器。
max_workers
必须大于或等于 min_workers
。
备注
- 增强型自动缩放仅适用于
updates
群集。 旧版自动缩放用于maintenance
群集。 -
autoscale
配置有两种模式:-
LEGACY
:使用群集自动缩放。 -
ENHANCED
:使用增强的自动缩放功能。
-
{
"clusters": [
{
"autoscale": {
"min_workers": 5,
"max_workers": 10,
"mode": "ENHANCED"
}
}
]
}
如果管道配置为适合连续执行,则在自动缩放配置更改后,管道将自动重启。 重启后,预计会有短时间的延迟增加。 经过短暂的延迟提高之后,群集大小将根据 autoscale
配置更新,管道延迟应恢复为之前的延迟特性。
备注
不能为无服务器管道配置工作进程。
在管道“计算”窗格中设置 Max workers 参数时将设置自动缩放的上限。 减少可用工作者的数量可能会增加某些工作负载的延迟,但这可以防止计算资源成本在计算密集型操作期间激增。
Databricks 建议优化“最大工作节点”设置,以平衡特定需求的成本与延迟的权衡。
可以使用 DLT 用户界面中的事件日志监视经典管道的增强自动缩放指标。 增强型自动缩放事件的事件类型为 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 |
还可以通过直接查询事件日志来查看增强型自动缩放事件:
- 若要查询事件日志中的积压工作 (backlog) 指标,请参阅通过查询事件日志监视数据积压工作 (backlog)。
- 若要在增强型自动缩放操作期间监视群集大小调整请求和响应,请参阅监视未启用无服务器功能的管道的事件日志中的增强自动缩放事件。
无服务器 DLT 管道通过自动分配最经济高效的实例类型(这些实例类型可以运行 DLT 管道,而不会因内存不足错误而失败),增强了 Databricks 增强型自动缩放提供的水平自动缩放能力。 当需要较大的实例类型来运行管道更新时,垂直自动缩放会纵向扩展;当确定可以使用较小的实例类型来运行更新时,垂直自动缩放还会纵向缩减。 垂直自动缩放确定是否应纵向扩展或缩减驱动程序节点、工作器节点或者这两种节点。
垂直自动缩放用于所有无服务器 DLT 管道,包括 Databricks SQL 具体化视图和流式处理表使用的管道。
垂直自动缩放的工作方式是检测因内存不足错误而失败的管道更新。 当检测到内存不足导致的故障时,垂直自动缩放会根据失败更新收集的数据分配更大的实例类型。 在生产模式下,使用新计算资源的新更新会自动启动。 在开发模式下,当你手动启动新的更新时,将使用新的计算资源。
如果垂直自动缩放检测到分配的实例的内存始终未得到充分利用,在下一次管道更新时,它将纵向缩减所要使用的实例类型。