2

所以我一直在使用 Akka Actors 一段时间,并且编写了一些可以在集群中的多台机器上分布计算的代码。在我运行“主”代码之前,我需要ActorSystem在将要部署的每台机器上等待,我通常通过一个 Python 脚本来执行此操作,该脚本将 SSH 连接到所有机器,并通过执行类似cd /into/the/proper/folder/then的操作来启动该过程sbt 'run-main ActorSystemCode'

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

我的问题是这样的:

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

  2. 如何解决让每台机器编译“它自己的副本”的问题?

4

2 回答 2

5

sbt 是一个构建工具,而不是一个应用程序运行器。使用 sbt-assembly 构建一个 jar 中的所有内容并将 jar 放在每台机器上并使用scalaorjava命令运行它。

于 2012-05-15T01:07:57.237 回答
4

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

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

于 2012-05-15T05:28:26.640 回答