所有 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)
我设置了一个似乎正确连接到调度程序的集群(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)