1

我有一个用 scala 编写的程序,使用 spark,当我启动它时它在本地运行良好sbt run

我希望能够使用 sbt 在亚马逊的 ec2 集群上运行它。这可能吗?怎么做?

我查看了http://spark.incubator.apache.org/docs/latest/ec2-scripts.html,但这似乎没有 sbt。

我的 sbt 版本:

~/git-reps/cs262a $ sbt --version
sbt launcher version 0.12.4

我的build.sbt文件:

name := "Ensemble Bayes Tree"

version := "1.0"

scalaVersion := "2.9.3"

libraryDependencies ++= Seq(
 "org.apache.spark" %% "spark-core" % "0.8.0-incubating",
 "org.apache.spark" % "spark-mllib_2.9.3" % "0.8.0-incubating",
 "org.slf4j" % "slf4j-api" % "1.6.4",
 "org.slf4j" % "slf4j-log4j12" % "1.7.5",
 "log4j" % "log4j" % "1.2.14",
 "org.eclipse.jetty.orbit" % "javax.servlet" % "2.5.0.v201103041518" artifacts Artifact("javax.servlet", "jar", "jar")
)

resolvers += "Akka Repository" at "http://repo.akka.io/releases/"
4

1 回答 1

0

启动 EC2 集群后,您可以将代码复制到集群的主节点,使用 ssh 登录到主节点,然后在该机器上运行 sbt(例如,AMP Camp 3 练习就是这样工作的)。

在您的驱动程序中创建 SparkContext 时,请确保传递 Spark master 的地址。我要source /root/spark/conf/spark-env.sh设置$MASTER环境变量,然后在我的驱动程序中读取该变量。主机地址也存储在/root/spark-ec2/cluster-url.

Sourcingspark-env.sh还将设置一些环境变量,用于根据集群节点的大小配置 Spark 作业的内存使用情况。如果您不获取此文件,请确保spark.executor.memory在驱动程序中设置 Java 系统属性,以充分利用集群的内存。

于 2013-11-27T20:16:29.937 回答