所有 Dask Worker 都需要使用相同的操作系统吗?

Do all Dask Workers need to be the same operating system?

我设置了一个似乎正确连接到调度程序的集群(3 Linux Ubuntu 18.04 和 3 Windows 10 机器,调度程序在其中一台 Win 10 机器上).在所有操作系统都是 Win 10 之前,我成功 运行 的代码出现超时错误。

这是错误的全部:

tornado.application - ERROR - Multiple exceptions in yield list
Traceback (most recent call last):
  File "C:\Apps\Anaconda\lib\site-packages\distributed\comm\core.py", line 186, in connect
    quiet_exceptions=EnvironmentError)
  File "C:\Apps\Anaconda\lib\site-packages\tornado\gen.py", line 1133, in run
    value = future.result()
tornado.util.TimeoutError: Timeout

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Apps\Anaconda\lib\site-packages\tornado\gen.py", line 883, in callback
    result_list.append(f.result())
  File "C:\Apps\Anaconda\lib\site-packages\tornado\gen.py", line 1141, in run
    yielded = self.gen.throw(*exc_info)
  File "C:\Apps\Anaconda\lib\site-packages\distributed\core.py", line 634, in send_recv_from_rpc
    comm = yield self.pool.connect(self.addr)
  File "C:\Apps\Anaconda\lib\site-packages\tornado\gen.py", line 1133, in run
    value = future.result()
  File "C:\Apps\Anaconda\lib\site-packages\tornado\gen.py", line 1141, in run
    yielded = self.gen.throw(*exc_info)
  File "C:\Apps\Anaconda\lib\site-packages\distributed\core.py", line 745, in connect
    connection_args=self.connection_args)
  File "C:\Apps\Anaconda\lib\site-packages\tornado\gen.py", line 1133, in run
    value = future.result()
  File "C:\Apps\Anaconda\lib\site-packages\tornado\gen.py", line 1141, in run
    yielded = self.gen.throw(*exc_info)
  File "C:\Apps\Anaconda\lib\site-packages\distributed\comm\core.py", line 195, in connect
    _raise(error)
  File "C:\Apps\Anaconda\lib\site-packages\distributed\comm\core.py", line 178, in _raise
    raise IOError(msg)
OSError: Timed out trying to connect to 'tcp://138.55.36.169:43033' after 10 s: connect() didn't finish in time

所以这个错误重复了 3 次,每个 ip 都是我的 linux 机器之一。这让我相信也许我不能在一个 dask 集群中拥有多个操作系统,但我无法在文档中找到任何这样说的内容。我做错了什么还是我只是在某个地方错过了这个?

工作人员都需要能够有效地序列化和反序列化函数。因此,如果您使用的函数和数据可以在一个 OS 上序列化并在另一个上反序列化并仍然执行,那么事情应该没问题。

原则上是这样的。 Python 函数应该可以在任何地方使用。尽管在实践中这可能会中断,例如,如果您在一台机器上有库但在另一台机器上没有,那么就会出现问题。

您出现的错误可能有多种原因,包括不同的 Python 版本或网络问题。

我建议调用以下命令来检查相关库的版本在您的 Dask worker 和客户端中是否相同。

client.get_versions(check=True)