5

我刚刚开始使用 Spark,所以从这里for Hadoop 1 (HDP1, CDH3)下载了二进制文件并将其提取到 Ubuntu VM 上。在不安装 Scala 的情况下,我能够从 Spark 交互式 shell执行快速入门指南中的示例。

  1. Spark 是否包含在 Scala 中?如果是,库/二进制文件在哪里?
  2. 为了在其他模式(分布式)下运行 Spark,我是否需要在所有节点上安装 Scala?

作为旁注,我观察到 Spark 拥有围绕开源项目的最佳文档之一。

4

4 回答 4

4

Spark 是否包含在 Scala 中?如果是,库/二进制文件在哪里?

项目配置放在project/文件夹中。我的情况是:

$ ls project/
build.properties  plugins.sbt  project  SparkBuild.scala  target

当您这样做时sbt/sbt assembly,它会下载适当版本的 Scala 以及其他项目依赖项。签出文件夹target/,例如:

$ ls target/
scala-2.9.2  streams

请注意,Scala 版本对我来说是 2.9.2。

为了在其他模式(分布式)下运行 Spark,我是否需要在所有节点上安装 Scala?

是的。您可以按照Spark 文档中的说明创建单个程序集 jar

如果您的代码依赖于其他项目,则需要确保它们也存在于从节点上。一种流行的方法是创建一个包含您的代码及其依赖项的程序集 jar(或“uber”jar)。sbt 和 Maven 都有汇编插件。创建程序集 jar 时,将 Spark 本身列为提供的依赖项;它不需要捆绑,因为它已经存在于从服务器上。组装好 jar 后,将其添加到 SparkContext 中,如下所示。在创建 SparkContext 时,也可以一一提交依赖的 jar。

于 2014-01-24T14:48:50.757 回答
3

普拉文 -

现在检查fat-master jar。

/SPARK_HOME/assembly/target/scala-2.9.3/spark-assembly_2.9.3-0.8.0-incubating-hadoop1.0.4.jar

这个 jar 包含在所有 scala 二进制文件 + spark 二进制文件中。

您可以运行,因为当您运行 spark-shell 时,此文件已添加到您的 CLASSPAH

在这里检查:运行 spark-shell > http:// machine:4040 > environment > Classpath Entries

如果您下载了 pre build spark ,那么您不需要在节点中有 scala,只需节点中 CLASSAPATH 中的这个文件就足够了。

注意:删除了我发布的最后一个答案,因为它可能会误导某些人。对不起 :)

于 2014-01-24T12:36:50.700 回答
1

您确实需要 Scala 在所有节点上都可用。但是,通过make-distribution.sh进行二进制分发,不再需要在所有节点上安装Scala。请记住安装运行 REPL 所必需的 Scala 与仅将 Scala打包为另一个 jar 文件之间的区别。

此外,如文件中所述:

# The distribution contains fat (assembly) jars that include the Scala library,
# so it is completely self contained.
# It does not contain source or *.class files.

因此,当您使用make-distribution.sh时,Scala 确实会顺其自然。

于 2014-01-24T15:21:50.587 回答
0

从 spark 1.1 开始,没有 SparkBuild.scala 你可以在 pom.xml 中进行更改并使用 Maven 构建

于 2014-10-16T17:26:28.523 回答