首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Java中的另一个应用程序部署Apache Spark应用程序,最佳实践

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

Stack Overflow用户
提问于 2015-03-26 23:23:43
回答 3查看 1.7K关注 0票数 5

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

然而,我很好奇,当我的web服务器(用Java编写)收到用户请求时,什么被认为是启动相应Spark应用程序的“最佳实践”?spark的文档似乎使用了"spark-submit“,但我不希望通过管道将命令发送到终端来执行此操作。我看到了一个替代方案,Spark-JobServer,它提供了一个RESTful接口来做这件事,但我的Spark应用程序是用Java或R编写的,这似乎与Spark-JobServer不能很好地接口。

有没有另一种最佳实践,从web服务器启动一个spark应用程序(用Java编写),然后等待作业成功或失败的状态结果?

任何关于其他人正在做什么的想法都会非常有帮助!谢谢!

EN

回答 3

Stack Overflow用户

发布于 2016-02-17 23:35:18

我也有类似的需求。下面是我所做的:

要提交应用程序,我使用隐藏的Spark REST提交接口:http://arturmkrtchyan.com/apache-spark-hidden-rest-api

  • Using这个接口您可以查询驱动程序的状态,也可以稍后终止您的作业

  • 还有另一个隐藏的UI Json API:http://[master-node]:[master-ui-port]/json/,它以JSON格式显示主UI上所有可用的信息。

我使用“提交API”提交驱动程序,并使用"Master UI API“等待我的驱动程序和应用程序状态运行

票数 1
EN

Stack Overflow用户

发布于 2015-03-27 20:44:42

web服务器也可以充当Spark驱动程序。因此,它将有一个SparkContext实例,并包含使用RDDs的代码。

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

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

票数 0
EN

Stack Overflow用户

发布于 2016-03-22 11:28:27

我们正在使用Spark Job-Server,它与Java一起工作得很好,只需构建Java代码的jar,并用Scala将其包装起来,就可以与Spark Job-server一起工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29282408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档