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

Posted

技术标签:

【中文标题】如何在 Apache Spark 上运行 RPC 服务器?【英文标题】:How to run an RPC server on Apache Spark? 【发布时间】:2014-07-17 20:17:55 【问题描述】:

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

___________________ RPC 分布式数据库 &lt-&gt |常驻后端&lt---&gt前端 |服务器 | ___________________ 火花

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

Spark 的架构似乎需要一次提交一个计算,作为已编译代码的 Jar。但是,由于整个设置是针对多用户 Web 应用程序和外部 API 的,因此拥有一个长时间运行的后端服务器,通过 RPC 与前端进行通信似乎更简单。

这完全有可能,没有太多的黑客攻击吗? Spark Streaming 的本质似乎需要有一个常驻服务器。 JavaStreamingContext#awaitTermination() 是尝试实现这样一个应用程序的唯一方法吗?

我发现我正在尝试做的一个可能的问题是,即使可能,解决这样的后端以建立连接。

非常感谢!

【问题讨论】:

【参考方案1】:

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

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

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

JobServer README中的详细信息。

【讨论】:

以上是关于如何在 Apache Spark 上运行 RPC 服务器?的主要内容,如果未能解决你的问题,请参考以下文章

org.apache.spark.rpc.RpcTimeoutException:期货在 [120 秒] 后超时。此超时由 spark.rpc.lookupTimeout 控制

GWT RPC“未找到 404”错误。如何让 RPC 在您自己的 Apache 服务器上工作?

Apache Spark 在 YARN 中部署时如何处理系统故障?

Apache Spark 2.2.0 中文文档 - 集群模式概述 | ApacheCN

Spark在StandAlone模式下提交任务,spark.rpc.message.maxSize太小而出错

如何将项目上传至Azkaban上运行