Azure Databricks 中的经典计算资源使用灵活的节点类型,这允许计算资源在指定的实例类型不可用时回退到备用兼容的实例类型。
此行为通过在计算启动期间减少容量故障(库存错误)来提高计算启动可靠性。 对于具有回退的现成实例,灵活的节点类型可以在回退到按需实例之前尝试在不同实例类型之间多次获取实例。 这会导致更多实例以“抢占式”(spot)模式而不是“按需”(on-demand)模式运行,从而减少总计算成本。
灵活节点类型的工作原理
启动计算资源时,云提供商有时会耗尽指定实例类型的容量。 这会导致库存错误:
CLOUD_PROVIDER_RESOURCE_STOCKOUT
虽然这些错误对于现成实例更为常见,但它们也可能发生在按需实例中。
启用灵活节点类型后,Azure Databricks 会自动生成或使用兼容的实例类型的指定回退列表。 如果首选实例类型不可用,Azure Databricks 会尝试获取这些备份实例类型,而不是立即失败。
在工作区中启用灵活的节点类型
工作区管理员可以在其工作区管理员设置中启用灵活的节点类型。 启用后,所有新的经典计算资源会自动回退到备用节点类型。 现有全用途计算资源不受影响。 请参阅现有工作负荷会受到怎样的影响?
若要在工作区中启用灵活的节点类型,请执行以下操作:
- 以工作区管理员身份转到设置页。
- 单击“计算”选项卡。
- 切换 “启用自动灵活节点类型 ”设置:
- 已启用:除非显式禁用,否则所有新的经典计算资源都会自动使用灵活的节点类型。
-
已禁用:经典计算资源仅在计算资源配置中显式配置
node_type_flexibility时使用灵活的节点类型。
如果禁用此设置,用户仍然可以通过显式配置具有自定义回退列表的 worker_node_type_flexibility 或 driver_node_type_flexibility 字段,为单个计算资源配置灵活的节点类型。 为了防止用户配置这些字段,工作区管理员可以使用计算策略。 请参阅 灵活节点类型策略示例。
指定自定义回退列表
在工作区中启用灵活节点类型时,Azure Databricks 会自动为新的计算资源生成兼容实例类型的回退列表。
如果不想使用自动生成的回退列表,可以改为指定自己的回退列表。 此外,如果工作区中禁用了灵活的节点类型,仍可以为计算资源指定自定义回退列表。 只有某些实例类型兼容。 请参阅 回退实例类型要求。 有关兼容实例类型的参考,请参阅 灵活的节点类型兼容性参考。
仅当使用 API 配置计算时,才支持自定义回退列表。 请参阅 群集 API 参考文档。
例如,以下配置指定计算资源将回退到哪些实例类型(如果需要):
"worker_node_type_flexibility": {
"alternate_node_type_ids": [
"Standard_L8s_v2"
]
},
"driver_node_type_flexibility": {
"alternate_node_type_ids": [
"Standard_L8s_v2"
]
},
回退实例类型要求
回退实例类型必须与计算的首选实例类型兼容。 回退实例类型列表必须满足以下要求:
- 与首选实例类型具有相同 vCPU 数量和内存(回退实例的内存必须是首选实例类型内存的 100% 到 110% 之间)
- 与首选实例类型的本地磁盘数量和磁盘大小相同
- 与首选实例类型相同的 CPU 体系结构(所有 ARM 或所有 x86)
- 与首选实例类型相同的 OS 映像和 Photon 支持
- 不支持 GPU 实例类型(不支持 GPU)
- 最多 5 个唯一回退实例类型
- 所有实例类型必须具有一致的存储支持:或者所有都支持PREMIUM_LRS存储,或者它们都不支持。
将灵活节点类型与池配合使用
还可以自定义池的备用列表。 在 池 API 中,将 node_type_flexibility 字段设置为指定回退实例类型。 例如:
"node_type_flexibility": {
"alternate_node_type_ids": ["Standard_L8s_v2"]
}
池不支持使用可变实例类型来维持最低空闲数量。 当尝试从池中启动计算时,池只能使用回退实例类型来启动 VM。 预热 minIdle 计数时仅采用首选的实例类型。
查看获取的实例类型
使用灵活的节点类型时,计算资源可能包含不同的实例类型组合。 所有回退实例类型都与首选类型兼容,维护相同的 vCPU 计数、内存、磁盘布局、CPU 体系结构和 OS 映像,以确保工作负荷正常运行。
可以查看为计算资源获取的实例类型:
- 在计算详细信息页中,单击 “终止 ”按钮旁边的三个点,然后选择“ 查看 JSON”。
- 查看每个执行器的
node_type_id字段,以识别正在运行的实例类型。
还可以使用 “获取群集信息 API ”以编程方式检索此信息。 此外,有权访问系统表的用户可以查询表 node_timelines 。
在计算资源上禁用灵活的节点类型
注释
Databricks 建议保持启用灵活的节点类型,除非对特定实例类型有严格的要求。
如果希望计算启动失败而不是回退到备用实例类型,则可以在单个计算资源级别禁用灵活的节点行为。 仅在使用群集 API 时才支持此功能。 若要禁用灵活节点类型,请在计算配置中将灵活节点类型字段设置为空。 例如:
"worker_node_type_flexibility": {
"alternate_node_type_ids": []
},
"driver_node_type_flexibility": {
"alternate_node_type_ids": []
}
常见问题解答
现有工作负荷受到怎样的影响?
现有的全用途计算资源保持不变。 若要使用自动回退,请在启用设置后创建新的通用计算资源,或使用自定义回退列表更新计算资源 API 规范。
对于使用作业计算资源的任务,每次运行都会创建新的计算资源,因此现有任务的后续运行会自动使用灵活备用方案。
这是否适用于实例池?
是的。 灵活的节点类型适用于实例池配置。 需要注意的一些要点:
-
最小空闲保持一致:池的最小空闲实例(
minIdle)使用主节点类型进行维护。 当主类型受限时,可以使用兼容的回退节点类型来满足通过群集启动请求启动的任何新 VM。 - 池编辑:创建实例池后无法编辑该池。 如果要更改任何自定义回退设置,则必须创建新的实例池。
-
API 可见性:除非已在池上显式配置自定义回退列表,否则
/api/2.0/instance-pools/get响应不会显示节点类型灵活性。 若要查看实例池的回退配置,可以创建示例群集并查看/api/2.1/clusters/get响应。
如何计费?
根据实际获得的实例类型的标准 DBU 费率进行计费。 与云提供商一起提供的任何实例级折扣都会自动应用于计算资源使用的匹配实例类型。
这如何与工作区中的节点类型配额交互?
如果计算启动失败,因为主节点类型达到“超出配额”限制,则灵活节点类型仍可以通过自动回退到兼容的替代项来提高启动可靠性。 也就是说,对于由于配额限制导致的故障,Databricks 建议将降级处理视为一种安全网,而不是主要解决方案。 可以从云提供商请求增加配额,以便 Azure Databricks 在采用替代方法或使用无服务器计算之前,可以一致地获取首选实例类型。
能否仅为一部分工作负荷启用灵活的节点类型?
自动生成的节点类型回退只能在工作区级别进行配置。 但是,有两个选项来控制特定工作负荷的回退行为:
-
(推荐) 为工作区启用灵活的节点类型,然后通过设置为
alternate_node_type_ids该群集规格中的空列表[]来选择退出特定群集。 - 为整个工作区禁用灵活的节点类型,然后通过在
中提供满足兼容性要求的自定义回退列表来配置特定的群集规格 。