【问题标题】:DASK SSH Cluster in Jupyter NotebookJupyter Notebook 中的 DASK SSH 集群
【发布时间】:2020-09-18 20:57:03
【问题描述】:

更新 我已将 SSH 密钥复制到我所有的机器上,它们无需密码即可进行通信,但是我仍然需要指定用户名@主机名,而不仅仅是主机名。 我尝试了许多不同的方法,但没有运气: 方法一:我在jupyter notebook上输入以下内容:

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 更好(那只黄色大象有点让我烦恼)。

以前的 我正在尝试使用 Jupyter Notebook 在家里的机器之间创建一个 DASK 集群。 我理解调度程序、工作人员和客户背后的概念。 在 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 等,但我想通过 Jupyter Notebook 了解 SSH 集群概念。

谢谢,

【问题讨论】:

  • 您很可能会收到诸如“您阅读过文档吗”和“您到目前为止尝试过什么,它是如何失败的”之类的回复。
  • 我读了很多堆栈溢出,但从未真正发布过,所以我想我把我的问题作为答案。不太确定如何发布我的新问题

标签: python ssh jupyter-notebook cluster-computing dask


【解决方案1】:

documentation 告诉你该怎么做。

如何设置 IP 地址、用户名和密码?

  • 将“localhost”列表替换为您要连接的机器的名称或 IP 地址。您必须能够在没有用户名/密码的情况下使用 SSH 登录,并且它们都必须设置相同的 python 环境
  • 不要尝试使用用户名/密码,设置基于密钥的身份验证;有很多方法可以做到这一点,所以选择a simple one

通过 Jupyter Notebook 实现 SSH 集群概念

在这里使用笔记本无关紧要,您正在执行 python 一样。

还有更好的选择,例如 Hadoop/Yarn、Kubernetes

很多人使用 SSH,因为它非常简单,但它确实让您管理任何编排(例如,确保机器在同一网络上并且可以通信,以及管理环境)。

-编辑-

(更新问题)

阅读 asyncSSH 文档,您想在 connect_option 上传递一个名为 username= 的选项(请参阅 here)。不幸的是,asyncssh 不会 currently support 使用 ~/.ssh 配置文件来定义目标,因此,如果您对每个服务器都有不同的选项,那么您就不走运了。

请注意,如果您正在做一些非常自定义的事情,则根本不需要使用 dask-ssh,您可以在每个服务器上显式登录和run dask

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-10
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 2016-05-24
    • 2020-10-31
    • 1970-01-01
    相关资源
    最近更新 更多