我在这里看到了几个问题,它们与我的想法类似,但不完全一样。所以,我想我会问一下,看看结果如何。
基本上,我有 2 或 3 台旧的、速度较慢的笔记本电脑闲置着。我想做的是将这些计算机集群起来,以便在它们上执行一些“令人尴尬的并行”数据分析程序(例如,在许多不同的核心上训练机器学习算法)。更具体地说,我想在这个集群上运行 Python 代码(scikit-learn,它能够在许多不同的核心上运行)。
理想情况下,我希望有一个集群,将 3 台笔记本电脑连接在一起,并将存储设备(1-2 TB)连接到网络。然后,我想编写脚本,在当前的笔记本电脑上进行数据分析,以某种方式(ssh?)访问集群,并在连接的设备中存储的数据上运行脚本,同时将分析分摊到不同的笔记本电脑上。有什么想法吗?
我读过一些关于 Beowulf 集群、Ubuntu 集群和其他内容的文章。但是,我对网络、集群、Unix 命令等毫无经验,而且真的不懂其中任何内容。我愿意学习,但真的不知道从哪里开始,所以如果能提供一些提示、资源和建议,我将不胜感激。
答案1
也许你可以找到Beowulf 聚类针对您的情况的一个有趣的解决方案。
答案2
如果你不想了解聚类的底层细节,我建议你看看 BOINChttp://en.wikipedia.org/wiki/BOINC。(相对)容易设置,很有趣:)
答案3
如果笔记本电脑非常旧,那么购买一台较新的单机可能会更快,因为这样可以更快地完成工作。或者购买一大堆新的微型 ARM 驱动的 Linux 机器(RaspberryPi 等),这些机器相当便宜,并将它们全部连接到一个非常紧凑的尺寸中,以便使用大量 CPU。
或者,如果您只是想尝试一下并学习,请参阅有关聚类的其他答案。
答案4
在您的情形下,我将了解如何使用 NFS 共享目录,以便每台机器都可以访问相同的数据。在此示例中,我们将目录称为 /data。然后,您需要使用 ssh 密钥 (ssh-keygen) 设置 ssh 以无需密码即可工作。从那里,您需要编写一些脚本(可能使用 Python,因为无论如何您都会使用它)来自动运行您的作业。您的脚本最终将运行类似于“ssh otherlaptop doexecutable /data/datafile”的内容。您还可以使用 Torque 资源管理器或 Slurm(用于资源管理的简单 Linux 实用程序)之类的东西在笔记本电脑上执行,但您仍然需要一个脚本来创建要交给 Torque/slurm 的作业。