命令行
目录
命令行¶
这是在多台机器上部署 Dask 的最基本方式。在生产环境中,这个过程通常由其他资源管理器自动化。因此,很少有人需要显式地遵循这些说明。相反,这些说明有助于理解集群管理器和其他自动化工具在底层做了什么,并帮助用户部署到目前没有自动化工具的平台。
一个 dask.distributed
网络包含一个 dask scheduler
进程和几个连接到该调度器的 dask worker
进程。这些是正常的 Python 进程,可以从命令行执行。我们在一个进程中启动 dask scheduler
可执行文件,在多个进程(可能在不同的机器上)中启动 dask worker
可执行文件。
为此,在一台节点上启动 dask scheduler
$ dask scheduler
Scheduler at: tcp://192.0.0.100:8786
然后,在其余节点上启动 dask worker
,并提供托管 dask scheduler
的节点的地址
$ dask worker tcp://192.0.0.100:8786
Start worker at: tcp://192.0.0.1:12345
Registered to: tcp://192.0.0.100:8786
$ dask worker tcp://192.0.0.100:8786
Start worker at: tcp://192.0.0.2:40483
Registered to: tcp://192.0.0.100:8786
$ dask worker tcp://192.0.0.100:8786
Start worker at: tcp://192.0.0.3:27372
Registered to: tcp://192.0.0.100:8786
工作节点连接到调度器,调度器随后会建立一个回连工作节点的长期网络连接。工作节点将从调度器那里得知其他工作节点的位置。
处理端口¶
调度器和工作节点都需要在开放端口上接受 TCP 连接。默认情况下,调度器绑定到端口 8786
,工作节点绑定到随机开放端口。如果您在防火墙后面,可能需要打开特定端口或使用 --port
和 --worker-port
关键字来告诉 Dask 监听特定端口。
dask scheduler --port 8000
dask worker --dashboard-address 8000 --nanny-port 8001
Nanny 进程¶
Dask 工作节点在 nanny 进程中运行,该进程监视工作节点进程并在必要时重新启动它。
诊断 Web 服务器¶
此外,Dask 调度器和工作节点使用 Bokeh 托管交互式诊断 Web 服务器。这些是可选的,但通常对用户有用。调度器上的诊断服务器尤其有价值,默认在端口 8787
上提供服务(可通过 --dashboard-address
关键字配置)。
有关相关端口的更多信息,请查看可用的命令行选项。
自动化工具¶
有多种机制可以在集群上部署这些可执行文件,从手动 SSH 到所有机器到更自动化的系统,如 SGE/SLURM/Torque 或 Yarn/Mesos。此外,还存在集群 SSH 工具,可以将相同的命令发送到多台机器。我们建议在线搜索“cluster ssh”或“cssh”。
CLI 选项¶
注意
这里的命令行文档可能因您的安装版本而异。建议参考 dask scheduler --help
和 dask worker --help
的输出。
dask scheduler¶
启动一个 Dask 调度器。
dask scheduler [OPTIONS] [PRELOAD_ARGV]...
选项
- --host <host>¶
本服务器的 URI、IP 或主机名
- --port <port>¶
服务端口
- --interface <interface>¶
首选网络接口,如 'eth0' 或 'ib0'
- --protocol <protocol>¶
协议,如 tcp、tls 或 ucx
- --tls-ca-file <tls_ca_file>¶
TLS 的 CA 证书文件(PEM 格式)
- --tls-cert <tls_cert>¶
TLS 的证书文件(PEM 格式)
- --tls-key <tls_key>¶
TLS 的私钥文件(PEM 格式)
- --dashboard-address <dashboard_address>¶
诊断仪表板监听地址
- 默认
':8787'
- --dashboard, --no-dashboard¶
启动仪表板 [默认: –dashboard]
- --jupyter, --no-jupyter¶
在同一进程中启动一个 Jupyter 服务器。警告:这将使任何能访问您的仪表板地址的人都能运行 Python 代码
- --show, --no-show¶
显示 web UI [默认: –show]
- --dashboard-prefix <dashboard_prefix>¶
仪表板应用的前缀
- --use-xheaders <use_xheaders>¶
在仪表板应用中使用 xheaders 进行头部的 SSL 终止
- 默认
False
- --pid-file <pid_file>¶
写入进程 PID 的文件
- --scheduler-file <scheduler_file>¶
写入连接信息的文件。如果您的集群位于共享网络文件系统上,这可能是一个共享连接信息的好方法。
- --preload <preload>¶
调度器进程应加载的模块,如“foo.bar”或“/path/to/foo.py”。
- --idle-timeout <idle_timeout>¶
调度器空闲多久后终止
- --version¶
显示版本并退出。
参数
- PRELOAD_ARGV¶
可选参数
dask worker¶
启动一个连接到现有调度器的 Dask 工作节点
dask worker [OPTIONS] [SCHEDULER] [PRELOAD_ARGV]...
选项
- --tls-ca-file <tls_ca_file>¶
TLS 的 CA 证书文件(PEM 格式)
- --tls-cert <tls_cert>¶
TLS 的证书文件(PEM 格式)
- --tls-key <tls_key>¶
TLS 的私钥文件(PEM 格式)
- --worker-port <worker_port>¶
服务计算端口,默认为随机。当使用 –nworkers 创建多个工作节点时,可以通过指定第一个和最后一个可用端口,例如 <第一个端口>:<最后一个端口> 来使用一系列顺序的工作节点端口。例如,–worker-port=3000:3026 将使用端口 3000, 3001, …, 3025, 3026。
- --nanny-port <nanny_port>¶
服务 nanny 端口,默认为随机。当使用 –nworkers 创建多个 nanny 时,可以通过指定第一个和最后一个可用端口,例如 <第一个端口>:<最后一个端口> 来使用一系列顺序的 nanny 端口。例如,–nanny-port=3000:3026 将使用端口 3000, 3001, …, 3025, 3026。
- --dashboard-address <dashboard_address>¶
诊断仪表板监听地址
- --dashboard, --no-dashboard¶
启动仪表板 [默认: –dashboard]
- --listen-address <listen_address>¶
工作节点绑定的地址。例如:tcp://0.0.0.0:9000 或 tcp://:9000 用于 IPv4+IPv6
- --contact-address <contact_address>¶
工作节点向调度器通告的用于与其及其他工作节点通信的地址。例如:tcp://127.0.0.1:9000
- --host <host>¶
服务主机。应为调度器及其他工作节点可见的 IP 地址。如果需要不同的监听地址和联系地址,请参阅 –listen-address 和 –contact-address。请参阅 –interface。
- --interface <interface>¶
网络接口,如 'eth0' 或 'ib0'
- --protocol <protocol>¶
协议,如 tcp、tls 或 ucx
- --nthreads <nthreads>¶
每个进程的线程数。
- --nworkers <n_workers>¶
要启动的工作进程数。如果为负数,则使用 (CPU_COUNT + 1 + nworkers)。设置为 'auto' 可根据 CPU_COUNT 动态设置 nworkers 和 nthreads
- --name <name>¶
此工作节点的唯一名称,如 'worker-1'。如果与 –nworkers 一起使用,则会附加进程编号,如 name-0, name-1, name-2, …
- --memory-limit <memory_limit>¶
- 工作节点可使用的每个进程的内存字节数。这可以是- 一个整数(字节),注意 0 是表示没有内存管理的特殊情况。- 一个浮点数(占总系统内存的比例)。- 一个字符串(如 5GB 或 5000M)。- 'auto' 用于自动计算内存限制。
- 默认
'auto'
- --nanny, --no-nanny¶
在 nanny 进程中启动工作节点进行管理 [默认: –nanny]
- --pid-file <pid_file>¶
写入进程 PID 的文件
- --local-directory <local_directory>¶
存放工作节点文件的目录
- --resources <resources>¶
用于任务约束的资源,如 “GPU=2 MEM=10e9”。资源分别应用于每个工作进程(仅在使用“–nworkers”启动多个工作进程时相关)。
- --scheduler-file <scheduler_file>¶
包含 JSON 编码的调度器信息的文件名。与 dask scheduler –scheduler-file 一起使用
- --death-timeout <death_timeout>¶
在关闭前等待调度器的时间(秒)
- --dashboard-prefix <dashboard_prefix>¶
仪表板前缀
- --lifetime <lifetime>¶
如果提供,在此持续时间后关闭工作节点。
- --lifetime-stagger <lifetime_stagger>¶
随机偏移量以错开生命周期值
- --worker-class <worker_class>¶
用于实例化工作节点的 Worker 类。
- 默认
'dask.distributed.Worker'
- --lifetime-restart, --no-lifetime-restart¶
生命周期到期后是否重新启动工作节点。这假定您正在使用 –lifetime 和 –nanny 关键字
- --preload <preload>¶
每个工作进程应加载的模块,如“foo.bar”或“/path/to/foo.py”
- --preload-nanny <preload_nanny>¶
每个 nanny 应加载的模块,如“foo.bar”或“/path/to/foo.py”
- --scheduler-sni <scheduler_sni>¶
调度器 SNI(如果与调度器主机名不同)
- --version¶
显示版本并退出。
参数
- SCHEDULER¶
可选参数
- PRELOAD_ARGV¶
可选参数