如何在Apache Spark上运行RPC服务器?

Jan*_*ski 2 architecture rpc apache-spark

我想知道Apache Spark是否可以进行以下设置:

                    ___________________ RPC
Distributed DB  <-> | resident Backend <---> Frontend
                    |      server     |
                    ___________________
                           Spark

我希望做的是在后端使用Spark的MLlib和Spark Streaming,并利用Spark的速度进行后端计算(统计,机器学习).

Spark的架构似乎需要一次提交一个计算,就像Jars的编译代码一样.但是,由于整个设置适用于多用户Web应用程序和外部API,因此使用长时间运行的Backend服务器,通过RPC与前端进行通信似乎更为直接.

这有可能,没有太多黑客攻击吗?似乎Spark Streaming的性质需要一个驻留服务器.是JavaStreamingContext#awaitTermination()来尝试实现这样的应用程序的唯一途径?

我看到我正在尝试做的一个可能的问题,即使可能,正在解决这样一个后端建立连接.

非常感谢!

Jan*_*ski 5

哈,我意识到Spark JobServer,我最初标记为"中途",实际上是解决问题的方法.(如果有更多或更简单 - 请发布它们.)

Spark JobServer包装Spark并通过HTTP以RESTful风格与外界通信.有一个命令上传一个带有一些已编译的计算代码的Jar,以及一个单独的命令来执行任何上传的Jars,同时提供输入.

因此,我的问题的解决方案是启动Spark JobServer,上传Jars以进行我希望系统执行的计算,并从前端发出HTTP RPC,要求JobServer在Spark上启动相应的Jars.

JobServer自述文件中的详细信息.