问题描述
Spot 实例可以以较低的价格使用云中的免费资源,但是如果云需求增加,您的资源将被解除分配。这对于非关键工作负载非常有用,只要您能负担得起一些已完成的工作。更多信息2 3
Databricks 可以运行 spot instances on AWS,但没有关于如何在 Azure 上执行此操作的文档。
是否可以在 Azure Spot 实例上运行 Databricks 集群?
解决方法
是的,可以但不能使用 Databricks UI。要在 Databricks 上使用 Azure Spot 实例,您需要使用 databricks cli。
注意
使用 cli 工具可以管理-创建、编辑、删除-集群和实例池。不过,为了简化流程,我将重点介绍编辑现有集群。
您可以使用 pip install databricks-cli
安装 databricks cli 并使用 databricks configure --token
配置您的凭据。如需更多信息,请访问 databricks documentation。
运行命令 datbricks clusters list
以了解您要修改的集群的 ID:
$ datbricks clusters list
0422-112415-fifes919 Big Spark3 TERMINATED
0612-341234-jails230 Normal Spark3 TERMINATED
0212-623261-mopes727 Small 7.6 TERMINATED
就我而言,我有 3 个集群。第一列是集群 ID,第二列是集群名称。最后一列是状态。
命令 databricks cluster get
以 json 格式生成集群配置。我们生成json文件修改一下:
databricks clusters get --cluster-id 0422-112415-fifes919 > /tmp/my_cluster.json
该文件包含与集群相关的所有配置,如名称、实例类型、所有者...在我们的例子中,我们正在寻找 azure_attributes
部分。你会看到类似的东西:
...
"azure_attributes": {
"first_on_demand": 1,"availability": "ON_DEMAND_AZURE","spot_bid_max_price": -1.0
},...
我们需要使用我们的出价将 availability
更改为 SPOT_WITH_FALLBACK_AZURE
和 spot_bid_max_price
。使用您喜欢的工具编辑文件。结果应该是这样的:
...
"azure_attributes": {
"first_on_demand": 1,"availability": "SPOT_WITH_FALLBACK_AZURE","spot_bid_max_price": 0.4566
},...
修改后,只需使用 databricks clusters edit
使用新的配置文件更新集群:
databricks clusters edit --json-file /tmp/my_cluster.json
现在,每次启动集群时,worker 都会是 Spot 实例。要确认这一点,您可以转到在由 databricks 管理的资源组中分配的 worker VM 内的配置选项卡。您将看到 Azure 现货处于活动状态并配置了价格。
AWS 上的 Databricks 对 SPOT
字段具有 more configuration options 之类的 availability
。但是,在文档发布之前,我们需要等待或使用 try-error 方法进行配置。