在云上部署 Dask 有多种方式。云提供商提供托管服务,例如虚拟机 (VM)、Kubernetes、Yarn 或自定义 API,Dask 可以轻松连接这些服务。

一些您可能需要考虑的常见部署选项包括

  • 一种商业 Dask 部署选项,例如 Coiled,用于处理 AWS、GCP 和 Azure 上的 Dask 集群的创建和管理。

  • 托管的 Kubernetes 服务以及 Dask 的Kubernetes 集成

  • 通过集群管理器使用 Dask Cloud Provider 直接启动云资源,例如虚拟机或容器。

  • 托管的 Yarn 服务,例如 Amazon EMRGoogle Cloud DataProc,以及 Dask-Yarn(可以在此处找到热门 Amazon EMR 服务的具体文档)。

_images/cloud-provider-logos.svg

云部署示例

Coiled 在 AWS、GCP 和 Azure 上部署托管的 Dask 集群。对大多数用户免费,并具有解决常见部署痛点的几个功能,例如

  • 易于使用的 API

  • 自动软件同步

  • 在任何区域轻松访问任何云硬件(例如 GPU)

  • 强大的日志记录、成本控制和指标收集

>>> import coiled
>>> cluster = coiled.Cluster(
...     n_workers=100,             # Size of cluster
...     region="us-west-2",        # Same region as data
...     vm_type="m6i.xlarge",      # Hardware of your choosing
... )
>>> client = cluster.get_client()

建议使用 Coiled 在云上部署 Dask。虽然也有非商业的开源选项可用,例如 Dask Cloud Provider、Dask-Gateway 和 Dask-Yarn(更多选项请参阅云部署选项)。

使用 Dask Cloud ProviderDigitalOcean 等平台上启动虚拟机集群,就像启动本地集群一样方便。

>>> import dask.config
>>> dask.config.set({"cloudprovider.digitalocean.token": "yourAPItoken"})
>>> from dask_cloudprovider.digitalocean import DropletCluster
>>> cluster = DropletCluster(n_workers=1)
Creating scheduler instance
Created droplet dask-38b817c1-scheduler
Waiting for scheduler to run
Scheduler is running
Creating worker instance
Created droplet dask-38b817c1-worker-dc95260d

Dask Cloud Provider 中的许多集群管理器的工作原理是:使用启动脚本启动虚拟机,该脚本拉取Dask Docker 镜像并在该容器中运行 Dask 组件。与所有集群管理器一样,虚拟机资源、Docker 镜像等都是可配置的。

然后,您可以连接客户端并像在本地机器上一样使用集群。

>>> client = cluster.get_client()

数据访问

除了在云上部署 Dask 集群外,大多数云用户还希望在其各自的云提供商上访问云端托管的数据。

我们建议安装额外的库(如下所列),以便在您的云提供商上轻松访问数据。有关更多信息,请参阅连接远程数据

使用 s3fs 访问 Amazon S3 上的数据。

pip install s3fs

使用 gcsfs 访问 Google GCS 上的数据。

pip install gcsfs

使用 adlfs 访问 Microsoft Data Lake 或 Blob Storage 上的数据。

pip install adlfs