如何在Dask分布式SSHCluster中正确设置工作端口?

如何在Dask分布式SSHCluster中正确设置工作端口?,dask,dask-distributed,Dask,Dask Distributed,我正在尝试使用Dask在数据中心的4台服务器(称为B、C、D和E)之间分配来自机器(称为a)的工作。A应该设置SSHCluster,将调度程序分配到B上,然后在B、C、D和E上生成工作进程。诀窍是只有一些端口是打开的,因此必须指定。对于调度程序来说,这很容易做到,但我无法让它为工人工作 如果未指定,A将成功启动B上的调度程序。调度程序随后认为它已成功启动随机端口上的所有工作程序,但在收集结果时,发现它只能联系B上的工作程序。到目前为止,这是有意义的。代码: cluster=distributed

我正在尝试使用Dask在数据中心的4台服务器(称为B、C、D和E)之间分配来自机器(称为a)的工作。A应该设置SSHCluster,将调度程序分配到B上,然后在B、C、D和E上生成工作进程。诀窍是只有一些端口是打开的,因此必须指定。对于调度程序来说,这很容易做到,但我无法让它为工人工作

如果未指定,A将成功启动B上的调度程序。调度程序随后认为它已成功启动随机端口上的所有工作程序,但在收集结果时,发现它只能联系B上的工作程序。到目前为止,这是有意义的。代码:

cluster=distributed.SSHCluster([scheduler\u location]+列表(worker\u locations),
工人选择={
“nprocs”:每个节点的进程,
“n读”:1,
})
一旦我试图为工人设置端口,它就无法启动工人。不管我怎么说,这似乎都会发生。我尝试在每台服务器上启动一个worker,指定要用作int的端口:

cluster=distributed.SSHCluster([scheduler\u location]+列表(worker\u locations),
工人选择={
“nprocs”:每个节点的进程,
“n读”:1,
“端口”:60000,
})
我已尝试在每台服务器上启动多个worker,以提供一系列可使用的端口:

cluster=distributed.SSHCluster([scheduler\u location]+列表(worker\u locations),
工人选择={
“nprocs”:每个节点的进程,
“n读”:1,
'端口':'{}:{}'。格式(
60000,每个节点60000+进程-1),
})
我尝试在每台服务器上启动多个worker,以提供完整的可用端口范围:

cluster=distributed.SSHCluster([scheduler\u location]+列表(worker\u locations),
工人选择={
“nprocs”:每个节点的进程,
“n读”:1,
“端口”:“60000:61000”
})
每次它都会返回四个错误(来自B、C、D和E),并显示“异常:工作程序无法启动”

总之,以下是我的问题:

  • 如何将端口分配给Dask SSHCluster中的工作进程
  • 一旦这样做了,我是否也必须对保姆流程进行同样的操作?如果是,怎么做

作为参考,这里是我正在使用的版本(它们可能并不都相关):python 3.8.3、dask 2.18.1、dask core 2.18.1、distributed 2.18.0、tornado 6.0.4、bokeh 2.01这在使用
工作者端口
而不是
端口

cluster = distributed.SSHCluster([scheduler_location] + list(worker_locations),
                                 worker_options={
                                     'nprocs': procs_per_node, 
                                     'nthreads': 1,
                                     'worker_port': '60000:61000'
                                 })