我的本地网络中有 3 台机器运行 manjaro。我正在使用 dask、pandas 等运行 python 脚本,这会最大化第一台机器上的 cpu,并且我通常需要等待 30 分钟以上才能完成任务。由于我已经在本地网络中设置了 3 台机器用于其他目的,因此我也希望从它们的 CPU 中受益。我不想更改 Linux 发行版,并希望继续在这些计算机上运行其他服务器。我通常运行可以轻松优化多重处理的 python 脚本(仅适用于独立数据的循环)有没有办法可以实现这一点?
答案1
这是一个过于宽泛的主题,无法在这里详细讨论,但作为一个快速概述,您将需要:
- 某种共享存储(例如网络文件系统)以便所有机器都可以访问脚本和数据。
- 作业调度程序和资源/工作负载管理器,例如泥浆
mpi4py
如果您的 python 进程需要相互通信(如果它们是完全独立的进程则不需要),可能需要某种消息传递库(例如)。- 顺便说一句,为了简单地避免权限问题,所有用户都运行作业必须在所有系统上具有相同的 UID 和 GID。
将其中一台机器设为头节点或控制节点。这可能也应该是存储服务器。它可能应该是 LAN 上 a) 使用最少且 b) 拥有最多存储空间(或用于安装更多存储空间的驱动器托架)的计算机。您应该在此机器上提交批处理作业。
顺便说一句,控制节点也可以充当计算节点。
另外两台机器应该是“计算节点”,以及存储服务器的客户端(例如,如果使用NFS,它们应该挂载NFS服务器导出的NFS目录)。
您可能不想走这么远,但在专用集群上,您将有一台或多台机器作为存储节点(nfs 或头孢或其他),还会有一些集中式身份验证服务器(尼斯或者LDAP或其他),并且头节点和计算节点的所有用户都将从文件服务器挂载其主目录。
然而,值得研究一下“真正的”集群是如何设计和构建的(或者至少得到一个概述),因为您可以从中获得一些很好的想法,可以缩小到 3 节点集群。