Pi集群的优缺点?


33

我已经看到很多帖子询问如何用Raspberry Pis构建“超级计算机”或集群,但是实际上建立Pis网络的利弊却很少。我对建立自己的小型集群很感兴趣,但是我有几个问题。

群集后,RPI是充当单个虚拟计算机,还是对所有RPI拥有单独控制权?一个节点可以控制其他节点吗?

RPI可以做的事情在集群中是有限的吗?例如,我仍然可以控制所有单独的GPIO端口吗?

它使pi快多少?可以说我制作了一个2节点集群,每个集群的时钟频率都超过1GHz,我是否将拥有一个“双核1GHz”处理器?群集是否需要为二进制倍数?(例如1,2,4,8,16,32,64)

这会使我通过NGINX for pi运行的虚拟主机变得复杂吗?可以为某些节点的处理能力分配它们处理的特定任务吗?例如节点1将处理Web服务请求,节点2将处理云存储等。

Answers:


49

一些有趣的问题。我认为您可能有点误解了使用Raspberry Pis构建的“超级计算机”的工作方式。它们不能用作自动负载分担系统。它们是为称为并行编程的东西而设计的,其中将复杂的任务分解为可以同时执行的部分。集群(头节点)中的主要Pi负责组织总体任务,集群(客户端节点)中的每个Pi都执行其分配的工作并将结果报告回头节点。诸如OpenMPI之类的库对此很关键。

此外,已构建的Raspberry Pi群集尚未构建为高效的计算设备。它们已被构建为开发平台。购买32台Raspberry Pi比购买32台台式机便宜得多。您可以以这种方式便宜得多地开发和测试并行编程软件。如果没有Pi或PC,则唯一的选择是在实际的超级计算机上请求CPU时间。根据相关计算机的大小,这样做可能会花费金钱或在资源可用之前等待很长的时间。因此,为什么人们建立了自己的个人集群。当您知道应用程序可以正常工作时,才可以在实际计算机上运行该应用程序!

因此,请记住这一点,然后继续处理您的特定问题。

在适当的群集中,Pi不能充当单个虚拟计算机。您可以通过任务或资源分配系统(例如Sun Grid Engine)的形式来对每个Pi进行松散控制。任务根据需要分配给节点,当任务完成时,该节点的资源将被释放以用于新任务。

在集群中,由于每个Pi都在运行自己的Linux副本,因此每个Pi都将保留对其GPIO端口的本地控制。我不确定软件将如何在并行计算环境中真正使用它,但是您已经找到了。

群集并不是真正使Pi更快,因为它们不是一台计算机。您所获得的仅仅是一次执行更多操作的能力。您不限于二的倍数。但是,根据运行的任务,群集计算机确实有实际的上限。想象一下,如果您在许多需要200个步骤的Pi上运行并行计算。但是,每个下一步都需要每个Pi在其上一步中计算的信息。因此,每个Pi每次迭代都需要从其他Pi接收数据。根据每次迭代计算所需的时间,与计算相比,最终可能花费更多的时间发送数据。这就是为什么大多数超级计算机都使用InfiniBand的原因网络。它非常快,因此您可以进行更多的计算。解决方案是使用更少的Pi,但让它们在每次迭代中做更多的工作,但这取决于您的算法可能无法实现。因此实际的上限。(在Pis上,这特别糟糕,因为USB以太网非常慢。)

因此,在实际应用中,分布式虚拟主机!您可以在此处利用多个Pi,这不是常规集群。假设您有5个Pis。我们将它们称为GatewayPi,WebPi1,WebPi2,WebPi3和DataPi。GatewayPi面向互联网,运行Nginix来处理Web请求,但不进行任何处理。相反,它所做的是负载平衡。它使用代理,并将传入的请求随机转发到WebPi1,WebPi2或WebPi3。我们刚刚将Web基础架构的功能增加了三倍,因为我们现在可以同时处理更多的请求。那DataPi呢?DataPi附带了一个硬盘驱动器,用于存储我们的所有Web数据,并且正在运行NFS服务器。WebPiX挂载了该NFS共享,因此它可以访问数据进行处理。这样,我们只需要在一个位置运行备份即可节省磁盘空间。

我刚才所描述的实质上是Google和Facebook等大公司使用的模型,但缩小到了Raspberry Pi的大小。唯一的问题是,由于Pis的成本,这样做实际上是在创建与Pis集群用于并行编程相同的开发平台(但用于Web服务)。使用多个Pi时,由于它们的计算能力相对较低,因此在您处理大量数据时会很快降低性能,降低能耗。但是只是为了学习?他们是完美的。


因此,如果我正在做一个家庭项目,以便廉价地托管2个网站,并通过GPIO,SSH,FTP,云存储,家庭自动化控制冷却风扇,那么值得做一个小集群来正确分配任务吗?
SuperAdmin 2014年

4
+1我对这个问题感到好奇,并接受了一点点教育。好答案。
jrhorn424

@iOSNoob,如果您是唯一使用它的人,并且一次只做这些事情中的任何一件,那么即使如此,它可能也不值得一个集群,因为资源是根据需要分配的。如果根本没有足够的RAM,或者您的负载比一个人多,那么这可能是值得的。为了安全起见,我会将风扇和家庭自动化之类的东西放在单独的Pi上。您确实希望有人在屋子里乱搞东西的机率是零...如果您必须通过额外的Pi才能更好地使用这些系统。那是额外的安全层。
Fred 2014年

@ jrhorn424很高兴您喜欢它!我最近参加了一个高性能(超级)计算活动,所以这些东西在我脑海中是新鲜的。写出来的绝佳时机。
Fred

1
弗雷德举了一个几乎确切的虚拟主机架构的具体示例:pidramble.com(链接到GitHub上的代码/指令,您可以在其中使用任何风格的Pi构建自己的代码/指令)。
geerlingguy
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.