У всех ли работников Dask должна быть одна и та же операционная система? - PullRequest
0 голосов
/ 30 января 2019

Я настроил кластер, который, по-видимому, правильно подключается к планировщику (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, но я не смог найти ничего в документации, которая говорит как таковая.Я делаю что-то не так или я просто где-то пропустил?

1 Ответ

0 голосов
/ 31 января 2019

Все работники должны иметь возможность эффективно сериализовать и десериализовать функции.Поэтому, если используемые вами функции и данные можно сериализовать в одной ОС, а в другой - десериализовать и продолжать выполнять, все должно быть в порядке.

В принципе это действительно так.Функции Python должны работать где угодно.Однако на практике это может сломаться, если, например, у вас есть библиотеки, присутствующие на одном компьютере, но не на другом, тогда возникнет проблема.

Появившаяся ошибка может быть по ряду причин, в том числе по разным причинам.Версии Python или проблемы с сетью.

Я рекомендую позвонить по следующему адресу, чтобы проверить, совпадают ли версии соответствующих библиотек для ваших сотрудников и клиентов Dask.

client.get_versions(check=True)
...