带有远程ipyparallel控制器的IPython笔记本电脑

时间:2016-07-21 21:26:40

标签: python ipython ipython-parallel

我目前正在尝试使用ipyparallel库在我拥有的一组服务器上设置远程群集。我想如果我在所有ipcontroller,ipengines和笔记本之间共享$ IPYTHONDIR,那么一切都只能连接和工作,但我目前的设置并非如此。

我试图完成的是ipcontroller和ipengines正在我的群集上等待jupyter笔记本连接到控制器并将其用于它的集群计算资源。

目前我无法将笔记本连接到我的控制器,即使所有端口都已打开,服务器可以直接访问,并且IPYTHONDIR是共享的。

当我打开笔记本并转到群集标签时,我会看到我的并行配置文件,但它没有启动。这很奇怪,因为ipcontroller和ipengines已经启动并等待笔记本电脑的连接。

归结为:

  • 是否可以在与ipcontroller不同的服务器上运行笔记本?
  • 如果可以实现上述目标,为什么我不能让笔记本连接到群集,而是当我在配置文件上单击“启动”时,它只会创建一个本地群集。

谢谢!

1 个答案:

答案 0 :(得分:0)

是的,如果笔记本内核与ipcontroller在同一服务器上运行,则可以这样做。笔记本电脑本身可以从任何浏览器显示。我经常使用这个功能。

我这样做的方法是在服务器上提供ipython配置文件。在我的情况下,它是一个Windows服务器,配置文件在c:\users\<user>\.ipython\下设置。在这种情况下,配置文件文件夹名为profile_my32bitcluster,当我创建客户端时,我指定要使用的配置文件:

from ipyparallel import Client

rc = Client(profile='my32bitcluster')
dview = rc[:]

# Test it by pushing out a dataframe across some engines, modifying it
# and returning the modified dataframes...
df = pd.DataFrame(data={'x':[1,2,3,4,5], 'y':[1,4,9,16,25]})

dview.push({'df':df})

def myfunc(x):
    import sys
    import os
    import pandas as pd
    global df
    df['z'] = df['x'] * x
    return df

results = dview.map_sync(myfunc, [2,3,4])

我希望有所帮助。