python - 如何正确实例化由本地和远程机器组成的 IPython 集群

标签 python ssh parallel-processing cluster-computing ipython

我在为 IPython 实例化集群时遇到了很大的问题。我认为该文档非常复杂。

我的系统由以下部分组成:

  1. 本地计算机,Ubuntu 12.04 x86_64,IPython 2.1,8 核处理器
  2. 远程计算机,Ubuntu 12.04 x86_64,IPython 2.1,16 核处理器,从本地计算机通过无密码 SSH 访问。

我无需密码就可以通过 ssh linello@myserveripaddress 访问远程服务器。 我认为这种情况对于许多进行科学计算的人来说是非常标准的。

我想用 8 个本地引擎和 16 个远程引擎(= 总共 24 个引擎)实例化一个 IPython notebook,以利用一些令人尴尬的并行计算。

如果我用 ipcluster start 启动我的 ipython 集群,然后启动一个 IPython 实例,在其中实例化 Client 类,我只会得到 8 个本地客户端

In[1]: from IPython import parallel
In[2]: clients  = parallel.Client()
In[3]: print clients.ids
Out[3]: [0,1,2,3,4,5,6,7]

这意味着只有本地引擎启动了。因此,我将 ipcluster_config.py 脚本修改为以下内容:

c = get_config()

c.IPClusterEngines.engine_launcher_class = 'SSH'
c.LocalControllerLauncher.controller_args = ["--ip='myserverip'"]

c.SSHEngineSetLauncher.engines = {
    'localhost': 4,
    'tyler': 4,
    'par': 4,
}


c.SSHEngineSetLauncher.engine_cmd = ['/ipengine']

其中myserverip其实是我的服务器ip 192.168.xxx.yyy

我真的不知道如何正确配置我的 ipython 配置文件以在我的 ipython 内核中拥有 24 个引擎。

最佳答案

我一开始也发现这真的很令人困惑。在某种程度上我仍然这样做,但我认为我有一个案例与你的相似。

唯一看起来缺少的是告诉引擎 Controller 在哪里。 ipcluster 配置中有一个选项,如下所示:

c.SSHEngineLauncher.engine_args = ['--location=xxx.xxx.xxx.xxx']

其中 xxx.xxx.xxx.xxx 是运行 Controller 的机器的 IP 地址。我认为您的配置可能存在问题。

我通常通过在提示符下运行 ipcluster 来测试这类事情。它通常非常明确地说明了问题。希望对您有所帮助。

此外,我通常不需要指定:

c.SSHEngineSetLauncher.engine_cmd = ['/ipengine']

关于python - 如何正确实例化由本地和远程机器组成的 IPython 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24264454/

相关文章:

python - Scrapy 登录适用于某些网站,但不适用于其他网站

python - django-tables2/django-filter - 使用过滤器类进行分页

ruby-on-rails - 由于 key 类型不受支持,无法将 Rails 应用部署到 DigitalOcean

parallel-processing - Spark Direct Stream 不会为每个 kafka 分区创建并行流

Python:如何从内存中的zip文件读取图像?

python - 如何在 Linux 上将 pip 安装到 PATH?

linux - 新的Ubuntu 14.04 VPS,无法以新用户身份登录

ssh - PuTTY 连接管理器下载?

parallel-processing - F#如何并行做List.map

concurrency - 在没有 IO 的光纤之间循环