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

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

在集群中,RPI可以做些什么吗?例如,我仍然可以控制所有单独的GPIO端口吗?

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

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

#1 楼

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

此外,已构建的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以太网速度很慢。)

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

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

评论


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

– SuperAdmin
2014年4月5日在15:28

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

– jrhorn424
2014年4月6日4:45

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

–弗雷德
2014年4月6日在17:20

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

–弗雷德
2014年4月6日在17:21

对于几乎确切的虚拟主机架构的具体示例,弗雷德描述了:pidramble.com(链接到GitHub上的代码/指令,您可以在其中使用任何风格的Pi构建自己的代码)。

–geerlingguy
16 Mar 27 '16 at 2:07