So I’ve been playing with Akka Actors for a while now, and have written some code that can distribute computation across several machines in a cluster. Before I run the “main” code, I need to have an ActorSystem waiting on each machine I will be deploying over, and I usually do this via a Python script that SSH’s into all the machines and starts the process by doing something like cd /into/the/proper/folder/ and then sbt 'run-main ActorSystemCode'.
I run this Python script on one of the machines (call it “Machine X”), so I will see the output of SSH’ing into all the other machines in my Machine X SSH session. Whenever I do run the script, it seems all the machines are re-compiling the entire code before actually running it, making me sit there for a few minutes before anything useful is done.
My question is this:
-
Why do they need to re-compile at all? The same JVM is available on all machines, so shouldn’t it just run immediately?
-
How do I get around this problem of making each machine compile “it’s own copy”?
sbt is a build tool and not an application runner. Use sbt-assembly to build an all in one jar and put the jar on each machine and run it with
scalaorjavacommand.