从Java的另一个应用程序部署Apache Spark应用程序,最佳实践

R.J*_*.J. 5 java deployment web-services apache-spark spark-jobserver

我是Spark的新用户。我有一个Web服务,该服务允许用户通过从数据库读取并将结果推回数据库来请求服务器执行复杂的数据分析。我已经将那些分析转移到了各种Spark应用程序中。目前,我使用spark-submit来部署这些应用程序。

但是,我很好奇,当我的Web服务器(用Java编写)收到用户请求时,什么是启动相应Spark应用程序的“最佳实践”方法?Spark的文档似乎是使用“ spark-submit”,但我宁愿不将命令传递给终端以执行此操作。我看到了一个替代方案Spark-JobServer,它提供了一个RESTful接口来完成此操作,但是我的Spark应用程序是用Java或R编写的,似乎无法与Spark-JobServer很好地接口。

是否有另一种最佳实践来从Web服务器(Java)中启动Spark应用程序,并等待状态结果(无论作业成功还是失败)?

任何其他人为实现此目的正在做什么的想法都将非常有帮助!谢谢!

Dan*_*bos 0

Web 服务器还可以充当 Spark 驱动程序。因此它会有一个SparkContext实例并包含使用 RDD 的代码。

这样做的好处是 Spark 执行器的寿命很长。您不必一直启动/停止它们,从而节省时间。您可以在操作之间缓存 RDD。

缺点是,由于执行器一直在运行,因此它们会占用集群中其他进程可能使用的内存。另一个问题是您不能拥有多个 Web 服务器实例,因为SparkContext同一个 Spark 应用程序不能拥有多个实例。