ОБНОВЛЕНИЕ. Я скопировал ключи 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.
Спасибо,