在Mesos集群上使用Spark时如何预先打包外部库

Tob*_*obi 9 scala mesos apache-spark mesosphere

根据Spark on Mesos文档,需要设置spark.executor.uri指向Spark分发:

val conf = new SparkConf()
  .setMaster("mesos://HOST:5050")
  .setAppName("My app")
  .set("spark.executor.uri", "<path to spark-1.4.1.tar.gz uploaded above>")
Run Code Online (Sandbox Code Playgroud)

文档还指出,可以构建Spark发行版的自定义版本.

我现在的问题是,是否有可能/希望预先打包外部库,例如

  • 火花流,卡夫卡
  • elasticsearch火花
  • 火花CSV

这将主要被用于所有的作业罐子,我会通过提交spark-submit

  • 减少sbt assembly包装脂肪罐的时间
  • 减少需要提交的脂肪罐的大小

如果是这样,怎么能实现呢?一般来说,是否有一些关于如何加快工作提交过程中脂肪罐生成速度的提示?

背景是我想为Spark作业运行一些代码生成,并立即提交这些代码并在浏览器前端异步显示结果.前端部分不应该太复杂,但我想知道后端部分是如何实现的.

Tob*_*obi 0

在我发现Spark JobServer项目后,我认为这是最适合我的用例的项目。

它支持通过 REST API 创建动态上下文,以及以手动/编程方式将 JAR 添加到新创建的上下文中。它还能够运行低延迟同步作业,这正是我所需要的。

我创建了一个 Dockerfile,以便您可以尝试使用最新(受支持)版本的 Spark (1.4.1)、Spark JobServer (0.6.0) 和内置 Mesos 支持 (0.24.1):

参考: