我目前正在尝试使用ipyparallel库在我拥有的一组服务器上设置远程群集。我想如果我在所有ipcontroller,ipengines和笔记本之间共享$ IPYTHONDIR,那么一切都只能连接和工作,但我目前的设置并非如此。
我试图完成的是ipcontroller和ipengines正在我的群集上等待jupyter笔记本连接到控制器并将其用于它的集群计算资源。
目前我无法将笔记本连接到我的控制器,即使所有端口都已打开,服务器可以直接访问,并且IPYTHONDIR是共享的。
当我打开笔记本并转到群集标签时,我会看到我的并行配置文件,但它没有启动。这很奇怪,因为ipcontroller和ipengines已经启动并等待笔记本电脑的连接。
归结为:
谢谢!
答案 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])
我希望有所帮助。