同时在多台(群集)计算机上运行SBT(Scala)

同时在多台(群集)计算机上运行SBT(Scala),scala,sbt,actor,akka,Scala,Sbt,Actor,Akka,因此,我已经使用Akka Actors玩了一段时间,并且已经编写了一些代码,可以在集群中的多台机器上分布计算。在我运行“main”代码之前,我需要一个ActorSystem在我将要部署的每台机器上等待,我通常通过一个Python脚本来实现这一点,SSH将进入所有机器,并通过执行类似cd/into/the/property/folder/的操作来启动流程,然后执行sbt“run main ActorSystemCode” 我在其中一台机器上运行这个Python脚本(称之为“Machine X”),

因此,我已经使用Akka Actors玩了一段时间,并且已经编写了一些代码,可以在集群中的多台机器上分布计算。在我运行“main”代码之前,我需要一个
ActorSystem
在我将要部署的每台机器上等待,我通常通过一个Python脚本来实现这一点,SSH将进入所有机器,并通过执行类似
cd/into/the/property/folder/
的操作来启动流程,然后执行
sbt“run main ActorSystemCode”

我在其中一台机器上运行这个Python脚本(称之为“Machine X”),因此我将在我的Machine X SSH会话中看到SSH’ing输出到所有其他机器。每当我运行脚本时,似乎所有的机器在实际运行之前都在重新编译整个代码,让我在做任何有用的事情之前坐在那里几分钟

我的问题是:

  • 为什么他们需要重新编译呢?所有机器上都有相同的JVM,所以它不应该立即运行吗

  • 我如何避免让每台机器编译“它自己的副本”这个问题


  • sbt是一种构建工具,而不是应用程序运行程序。使用sbt assembly构建一个多功能jar,将jar放在每台机器上,并使用
    scala
    java
    命令运行它

    集群通常在每个节点上安装一个分区(通过NFS或samba)。您只需复制该分区上的工件,就可以在每个节点中直接访问它们。如果不是这样,您应该让系统管理员安装它

    然后您需要启动应用程序。同样,大多数集群都会出现
    使用MPI。工具
    mpirun
    (或
    mpiexec
    )并不局限于真正的MPI应用程序,它将在多个节点上启动您想要的任何脚本。

    这是一个集群,因此它们都共享同一个分区(NFS)。。一个罐子可以在多台机器上运行吗?我不明白为什么它不能工作。尝试一下,如果它不起作用,您仍然可以创建jar的多个副本。如果是这样的话(对不起,我对行话不太熟悉),我需要复制的“工件”是什么?主要是jar文件。(以及您可能需要的任何资源,如配置文件、输入文件等)