如何建立丛集?


63

过去几年中,网上有几篇关于在家里建立计算机集群的文章- 例如在这里

由于价格低廉,Pi打动我成为构建/测试此类事物的好平台。这样的“通用”指南应该很容易转移到Pi上,还是在尝试此类项目时我应该特别注意些什么?



我添加了标签“ bramble”,因为这就是这些名称。除了“把一堆放在一起,跑Hadoop之类的东西”之外,无法给出正确的答案-确实,我喜欢这个问题,自己去寻找答案!
winwaed 2012年

其他Pi用户也不知道魔术字“荆棘”。搜索基金会的论坛可能有所帮助,但响应速度通常很慢,因此我不会拒绝您的投票。
mlp

4
南汉普顿大学已经制定了制造64 pi集群(或“超级计算机”)的步骤:southampton.ac.uk/~sjc/raspberrypi/…–
Alex L

Answers:


35

我建议查看Dispy-分布式计算python模块。

要从PC(服务器-假定IP为192.168.0.100)在多个Raspberry Pi的(节点)上运行程序:

  • 在每个RasPi上安装操作系统

  • 将每个RasPi附加到您的网络。查找IP(如果是动态的)或设置静态IP。
    (假设您有三个节点,它们的IP为192.168.0.50-52

  • 设置Python(如果尚未安装),请安装dispy,然后dispynode.py -i 192.168.0.100在每个RasPi上运行。这将告诉dispynode从服务器接收作业信息。

  • 在PC(服务器)上,安装dispy,然后运行以下python代码:

#!/usr/bin/env python
import dispy
cluster = dispy.JobCluster('/some/program', nodes=['192.168.0.50', '192.168.0.51', '192.168.0.52'])

您还可以替换/some/program为python函数-例如compute

您还可以dispy通过添加以下内容来包括依赖项,例如python对象,模块和文件(这些将转移到每个节点)depends=[ClassA, moduleB, 'file1']


8
我希望知道是否有人这样做-请发表评论,让我知道它是否有效!
Alex L

就我而言(openelec + python 2.7)我在<module>的ImportError中收到此错误“文件“ ./Lib/multiprocessing/__init__.py”,第84行:/usr/lib/python2.7/lib-dynload/ _multiprocessing.so:未定义的符号:SemLockType”。
Guido

但是dispy3-3.6与wheezy + python3一起运行!2013-03-13 23:01:30,664-dispynode-在192.168.1.34:51348服务1 cpus。当您启动任务(即/ bin / ls)时,节点会收到任务,将可执行文件移至/ tmp,但是出了点问题“执行['/ tmp / dispy / b7e04cb4a1e144e1 / ls']失败,并出现(<class'OSError '>,OSError(8,'Exec格式错误'),<在0x16f2580处的回溯对象”)
Guido

10

您应该意识到已经完成的工作-甚至有一个RasPi Boxen簇的名称。在嵌入式Linux维基说,一个树莓被定义为“一个Beowulf集群树莓裨设备”。树莓派家酿有一些职位 荆棘,并且 基金会自身的论坛。


14
我认为告诉某人Google答案对这个网站没有好处。知道名称但考虑添加一些内容和参考链接到您的答案很有用。

添加了内容和链接,@ Joe。如果选民现在重新评估他们的意见,那就太好了……
mlp 2012年

1
如果我真的投票赞成我,我会…

为了避免暗示您,乔,我非常谨慎地表述了它。也许他们没有意识到可以通过重新单击同一按钮来撤消此处的投票,而不是通过单击相反的按钮来撤消投票。
mlp 2012年


6

这是完全可能的,但是最大的问题是可实现性。我不仅认为这是可行的想法,而且对便携式并行计算的想法很有用。就细节而言,像FORTRAN和C ++这样的编码语言将是最好的。

查看beowulf.org,了解有关集群计算的更多信息


1

这是对Guido Garcia上面关于“ dispy”的帖子的回复-我不知道如何回复他的帖子。

当一个程序('/ bin / ls')与'dispy'一起分发以并行执行时,客户端计算机上的该程序将被传输到每个节点(到'/ tmp')。这样,就可以在没有NFS或某些共享目录的情况下传输客户端计算机上用户开发的程序。仅当节点和客户端体系结构兼容时,此方法才适用于二进制程序。在您的情况下,我猜测客户端架构与远程节点的架构不同,并且一个节点无法执行从客户端传输的二进制“ / bin / ls”。如果要在每个节点上执行/ bin / ls,可能更容易编写Python函数或程序来打印目录(例如,使用os.listdir)并分发该目录而不是二进制可执行文件。


您需要50声望才能对其他人的答案/问题发表评论。不过欢迎您!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.