所以我现在已经和Akka Actors一起玩了一段时间,并编写了一些可以在集群中的多台机器上分配计算的代码。在运行“主”代码之前,我需要在我将要部署的每台机器上等待ActorSystem
,我通常通过一个Python脚本来执行此操作,SSH脚本进入所有机器并通过执行来启动该过程类似cd /into/the/proper/folder/
然后sbt 'run-main ActorSystemCode'
。
我在其中一台机器上运行这个Python脚本(称之为“机器X”),因此我将在我的Machine X SSH会话中看到SSH输入到所有其他机器的输出。每当我运行脚本时,似乎所有的机器都在重新编译整个代码之前实际运行它,让我在完成任何有用的操作之前在那里坐几分钟。
我的问题是:
为什么他们需要重新编译?所有机器都可以使用相同的JVM,所以不应该立即运行吗?
如何解决使每台机器编译“它自己的副本”的问题?
答案 0 :(得分:5)
sbt是一个构建工具,而不是应用程序运行器。使用sbt-assembly构建一个jar,并将jar放在每台机器上,并使用scala
或java
命令运行它。
答案 1 :(得分:4)
群集通常在每个节点上安装一个分区(通过NFS或samba)。您只需要复制该分区上的工件,它们将在每个节点中直接访问。如果不是这种情况,您应该让系统管理员安装它。
然后您需要启动该应用程序。同样,大多数集群来了
与MPI。工具mpirun
(或mpiexec
)不仅限于实际的MPI应用程序,还会在多个节点上启动您想要的任何脚本。