本章描述了在不同的硬件上设置Dask的各种方法,无论是在本地机器上还是在分布式集群上。如果您刚刚开始使用dask,那么这一章节是不必要的。如果您只想在一台计算机上使用Dask,则不需要任何设置。
DASK有两个任务调度程序系列:
- 单机调度器:该调度器在本地进程或线程池上提供基本特性。这个调度程序是首先默认创建的。它使用简单、便宜。它只能在一台机器上使用,不能分布式上使用。
- 分布式调度程序:这个调度程序相对复杂。它提供了更多的功能,但也需要更多的精力来设置。它可以在本地运行,也可以跨集群分布。
如果导入Dask,设置一个计算,然后调用 compute,那么默认情况下将使用单机调度程序。使用dask.distributed 调度程序您必须设置一个客户端
单机
import dask.dataframe as dd
df = dd.read_csv(...)
df.x.sum().compute() # This uses the single-machine scheduler by default
分布式
from dask.distributed import Client
client = Client(...) # Connect to distributed cluster and override default
df.x.sum().compute() # This now runs on the distributed system
注意,新的 dask.distributed 调度程序即使在单个工作站上也是可行的。它包含许多在旧的单机调度程序中找不到的诊断和特性。下面的页面将更详细地解释如何在各种本地和分布式硬件上设置Dask。
- 单机:
- 分布式运算
- 手动设置: 命令行接口,用于设置 dask-scheduler and dask-worker进程. 对IT或构建部署解决方案的任何人都有用。
- SSH: 使用SSH跨非托管集群设置Dask。
- 高性能计算机群: 如何使用MPI之类的工具,或SLURM、SGE、TORQUE、LSF等作业调度程序,在传统的HPC环境上运行Dask。
- Kubernetes: 使用Helm或本机部署将Dask部署到流行的Kubernetes资源管理器中。
- YARN / Hadoop: 在YARN集群上部署Dask,比如在传统Hadoop安装中。
- Python API (advanced):从Python中创建Scheduler 和 Worker 对象,作为分布式Tornado TCP应用程序的一部分。这个页面对于构建自定义框架非常有用。
- Docker 容器在上面的一些解决方案中可能是有效的。
Cloud 有关如何在常见云提供商(如Amazon、谷歌或Microsoft Azure)上部署Dask和Jupyter的最新建议。