命令行
目录
命令行¶
这是在多台机器上部署 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 进程内运行,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 创建多个工作进程时,可以通过指定第一个和最后一个可用端口(如 <first-port>:<last-port>)来使用连续范围的端口。例如,–worker-port=3000:3026 将使用端口 3000, 3001, …, 3025, 3026。
- --nanny-port <nanny_port>¶
服务 nanny 端口,默认为随机。使用 –nworkers 创建多个 nanny 进程时,可以通过指定第一个和最后一个可用端口(如 <first-port>:<last-port>)来使用连续范围的 nanny 端口。例如,–nanny-port=3000:3026 将使用端口 3000, 3001, …, 3025, 3026。
- --dashboard-address <dashboard_address>¶
监听诊断仪表盘的地址
- --dashboard, --no-dashboard¶
启动仪表盘 [默认: –dashboard]
- --listen-address <listen_address>¶
工作进程绑定的地址。示例:IPv4+IPv6 使用 tcp://0.0.0.0:9000 或 tcp://:9000
- --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>¶
用于实例化工作进程的工作进程类。
- 默认值
'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¶
可选参数