Dask Cloud Provider

Dask Cloud Provider

Dask 的原生云集成。

此软件包包含开源工具,可帮助您在云上部署和操作 Dask 集群。它包含集群管理器,可帮助您使用原生云资源(如虚拟机或容器)启动集群;它包含适用于在云上运行的任何集群的工具和插件,并且是 Dask 云部署的绝佳文档来源。

它绝不是在云上运行 Dask 的“完整”或“唯一”方法,请查看替代方案页面以获取更多工具。

集群管理器

此软件包提供了在各种云平台上构建和管理临时 Dask 集群的类。

Dask Cloud Provider 是部署 Dask 集群的众多选项之一,请参阅 Dask 文档中的部署 Dask以获取更多选项的概述。

要使用云提供商集群管理器,您可以导入并实例化它。实例化该类将为您创建云资源。

from dask_cloudprovider.aws import FargateCluster
cluster = FargateCluster(
    # Cluster manager specific config kwargs
)

然后您可以使用该集群对象构建一个 Dask 客户端来使用该集群。

from dask.distributed import Client
client = Client(cluster)

连接到集群后,您就可以开始使用 Dask,所有计算都将在您的云资源上进行。

完成后,请务必关闭集群以关闭您拥有的任何云资源并终止所有费用。

cluster.close()

警告

如果集群对象在未调用 cluster.close() 的情况下被销毁,集群管理器会尝试在垃圾回收时自动移除悬空的云资源,但这不能保证。

要在使用完毕后隐式关闭集群,您可以选择通过上下文管理器构造集群管理器。然而,这会导致每次运行此代码时都创建和销毁整个集群。

from dask_cloudprovider.aws import FargateCluster
from dask.distributed import Client

with FargateCluster(...) as cluster:
    with Client(cluster) as client:
        # Do some Dask things

插件

Dask 组件(如调度器和工作进程)可以受益于对云的感知。本项目提供了扩展这些组件的插件和工具。

一个示例是让工作进程在临时/竞价实例上运行时检查终止警告,并开始将数据迁移到其他工作进程。

对于 Azure VM,您可以使用 dask_cloudprovider.azure.AzurePreemptibleWorkerPlugin 来实现此功能。它可用于任何在 Azure VM 上运行工作进程的集群,而不仅仅是使用 dask_cloudprovider.azure.AzureVMCluster 创建的集群。

from distributed import Client
client = Client("<Any Dask cluster running on Azure VMs>")

from dask_cloudprovider.azure import AzurePreemptibleWorkerPlugin
client.register_worker_plugin(AzurePreemptibleWorkerPlugin())