参考网址
优势:dask内部自动实现了分布式调度、无需用户自行编写复杂的调度逻辑和程序;
通过调用简单的方法就可以进行分布式计算、并支持部分模型的并行化处理;
内部实现的分布式算法:xgboost、LR、sklearn的部分方法等
*用一句话说:dask就是python版本的spark,是一个用Python 语言实现的分布式计算框架*
1/dask安装(分布式版安装)
pip install dask --upgrade pip install distributed --upgrade
或者同时安装
pip install dask distributed --upgrade
2/dask集群搭建
因为在dask集群中,有多种角色,client,scheduler,worker
client:客户端,用于客户与集群之间的交互。
scheduler:主节点(也是注册中心),可以理解为集群的大管家,
主要把client提交的任务task,按照一定的策略分发给不同的worker节点去执行。
worker:具体工作的节点,时时刻刻受到scheduler的监视。
因此,我们需要准备多台服务器,或者虚拟机。
<1>启动主节点scheduler

从上图可以看到,主节点已经启动,在tcp://192.168.1.42:8786上。
也就是说,scheduler的ip是192.168.1.42,开启的服务端口是8786.
<2>启动worker节点
在其他每台linux机器命令行输入:
$ dask-worker 192.168.1.42:8786
注意:后面跟的ip和端口是主节点scheduler的ip和对应服务的端口

启动worker节点之后,我们不仅可以在work服务器上看到相关的信息,
同时,我们也会在scheduler节点上看到相关的信息。
这也就是为什么说:worker节点时时刻刻受到scheduler节点的监视。
3/dask集群的使用
另外再找一台服务器,作为客户端
"""分布式dask"""
import time
from dask.distributed import Client
# 连接dask集群,注意这里的ip和端口是scheduler服务器的,而不是worker节点服务器的。
client = Client('192.168.1.42:8786' ,asynchronous=True)
ts = time.time()
A = client.map(square, range(10000))
B = client.map(neg, A)
total = client.submit(sum, B)
print(total.result())
print('cost time :%s'%(time.time()-ts))
cost time :3.793848991394043