Кластер DASK SSH в Jupyter Notebook

ОБНОВЛЕНИЕ. Я скопировал ключи SSH на все свои машины, и они могут общаться без пароля, однако мне все равно нужно указать имя пользователя @ имя хоста, а не только имя хоста. Я пробовал много разных методов, но безуспешно: Метод 1: я ввожу в свой блокнот jupyter следующее:

from dask.distributed import Client, SSHCluster
cluster = SSHCluster(
["localhost", username@hostname],
connect_options={"known_hosts": None},
worker_options={"nthreads": 2},
 )
client = Client(cluster)

Я понимаю, что connect_options - это то, что делает библиотека asyncio для подключения ssh, поэтому я подумал, что known_hosts в порядке, поскольку он выглядит как авторизованные ключи в моем каталоге .ssh. Однако я продолжаю получать следующую ошибку:

 ~/anaconda3/lib/python3.7/concurrent/futures/thread.py in run(self)
 55 
 56         try:
 57             result = self.fn(*self.args, **self.kwargs)
 58         except BaseException as exc:
 59             self.future.set_exception(exc)

~/anaconda3/lib/python3.7/socket.py in getaddrinfo(host, port, family, type, 
proto, flags)
750     # and socket type values to enum constants.
751     addrlist = []
--> 752     for res in _socket.getaddrinfo(host, port, family, type, proto, 
flags):
753         af, socktype, proto, canonname, sa = res
754         addrlist.append((_intenum_converter(af, AddressFamily),

gaierror: [Errno -2] Name or service not known

Вторым методом, который я попробовал, был dask-ssh, который я набрал в командной строке:

dask-ssh localhost username@hostname username@hostnameb --nprocs 10

Однако, когда я открываю панель управления, я не вижу ничего из рабочих узлов с удаленных машин на панели мониторинга, только 10 рабочих с локального хоста.

Пожалуйста, помогите, я читал учебные пособия, смотрел Stack Overflow, я даже пробовал Kubernetes (microk8s, k3s, minikube, kubeadm) и Apache Hadoop / Yarn с многочасовыми неудачными результатами, и dask ssh кажется моей единственной надеждой. Еще мне нравится Dask, потому что панель инструментов выглядит лучше, чем Hadoop (этот желтый слоник меня как бы пугает).

ПРЕДЫДУЩИЙ Я пытаюсь создать кластер DASK между моими домашними машинами с помощью Jupyter Notebook. Я понимаю концепцию планировщиков, работников и клиентов. В Dask Docs они предоставили следующий пример, который мне трудно понять, как заставить его работать:

from dask.distributed import Client,SSHCluster
cluster = SSHCluster(
          [["localhost", "localhost", "localhost", "localhost"],
           connect_options={"known_hosts": None},
           worker_options={"nthreads": 2},
           scheduler_options={"port": 0, "dashboard_address": ":8797"}
           client = Client(cluster)

У меня вопрос, как мне настроить SSHCluster, чтобы я мог создать кластер между разными машинами. Как мне установить IP-адрес, имя пользователя и пароль? Я понимаю, что есть варианты получше, такие как Hadoop / Yarn, Kubernetes и т. Д., Но я хотел понять концепцию кластера SSH с помощью Jupyter Notebook.

Спасибо,


person Vinh Tran    schedule 31.05.2020    source источник
comment
Вы, скорее всего, получите ответы, например, прочитали ли вы документацию, и что вы пробовали до сих пор, и почему это не удалось.   -  person mdurant    schedule 31.05.2020
comment
Я много читал о переполнении стека, но на самом деле никогда не публиковал, поэтому я думаю, что поставил свой вопрос в качестве ответа. не совсем уверен, как опубликовать мой новый вопрос   -  person Vinh Tran    schedule 02.06.2020


Ответы (1)


В документации указано, что делать.

Как мне установить IP-адрес, имя пользователя и пароль?

  • замените список localhost именами или IP-адресами машин, к которым вы хотите подключиться. Вы должны иметь возможность входить в каждый с помощью SSH без имени пользователя и пароля, и все они должны иметь идентичные среды Python.
  • не пытайтесь использовать логин / пароль, настройте авторизацию по ключу; есть много способов сделать это, поэтому выберите простой < / а>

Концепция кластера SSH через Jupyter Notebook

Использование записной книжки здесь несущественно, вы все равно запускаете python.

есть варианты получше, такие как Hadoop / Yarn, Kubernetes

Многие люди используют SSH, потому что это очень просто, но он оставляет вам возможность управлять любой оркестровкой (например, убедиться, что машины находятся в одной сети и могут обмениваться данными, а также управлять средами).

-РЕДАКТИРОВАТЬ-

(к обновленному вопросу)

Читая документацию по asyncSSH, вы хотите передать параметр username= в connect_option (см. здесь). asyncssh не в настоящее время поддерживает использование файла конфигурации ~ / .ssh для определения целей, к сожалению , поэтому, если у вас есть разные варианты для каждого сервера, вам не повезло.

Обратите внимание: если вы делаете что-то очень нестандартное, вам вообще не нужно использовать dask-ssh, вы можете войти в систему и явно запускать dask на каждом сервере.

person mdurant    schedule 01.06.2020