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

时间:2019-01-30 16:15:29

标签: dask dask-distributed

我设置了一个群集,该群集似乎可以正确连接到调度程序(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机器之一。这使我相信,也许我不能在一个轻松的集群中拥有多个操作系统,但是我却无法在文档中找到任何类似的内容。我是在做错事还是只是在某个地方错过了这个机会?

1 个答案:

答案 0 :(得分:1)

所有工作人员都需要能够有效地对功能进行序列化和反序列化。因此,如果您正在使用的功能和数据可以在一个操作系统上进行序列化,而在另一个操作系统上进行反序列化并且仍然可以执行,那么一切就可以了。

原则上,这是正确的。 Python函数应该可以在任何地方使用。实际上,尽管例如,如果您在一台机器上有库但另一台机器上没有库,则可能会中断。

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

我建议致电以下内容,以检查Dask工作人员和客户端中相关库的版本是否相同。

client.get_versions(check=True)