是否可以在已经运行的 java 进程中生成 Spark 执行程序(Ignite JVM)

Posted

技术标签:

【中文标题】是否可以在已经运行的 java 进程中生成 Spark 执行程序(Ignite JVM)【英文标题】:Can Spark executors be spawned in already running java process (Ignite JVM) 【发布时间】:2019-04-04 07:02:41 【问题描述】:

我正在开展一个项目,我需要在不同的 spark 应用程序之间共享执行状态。

我决定使用 apache-ignite 作为不同 spark 应用程序之间的共享内存存储。

我正在考虑在 spark where 中使用 带有静态分配的嵌入式点火模式 点燃节点将在 Spark 执行程序进程中启动。这样,任务将在存在数据的同一进程中执行。但是,此模式已弃用

我可以使用独立的 Ignite 部署,但会有进程间通信来获取和保存我想要避免的状态。

有没有办法告诉 Spark 在已经存在的进程(在本例中为 Ignite 节点进程)中创建其执行器?

可以实现 ExternalClusterManager 来实现这一点吗?

Ignite 是否计划在未来引入这种模式?

【问题讨论】:

【参考方案1】:

嗯,是的,您的总体方向是合理的。可以说,Ignite 已弃用的嵌入式部署是“向后”嵌入的——当您将 Ignite 嵌入到 Spark 中时,它的效果很差,但如果我们将 Spark 嵌入到 Ignite 中,效果会更好。

是的,我认为可以实施。它甚至可以在 Ignite 之外实现。

我认为 Ignite backlog 中没有任何未解决的问题,但您可以在 Ignite dev mailing list 上分享您的建议。

现在是主要部分。您的建议将实现的所有目标都是用进程内替换进程间通信。通常,同一主机上的通信并不那么昂贵。您可能会从中看到一些性能提升,但如果有确凿的证据表明这将解决一个真正的问题,我只会实施它。

【讨论】:

以上是关于是否可以在已经运行的 java 进程中生成 Spark 执行程序(Ignite JVM)的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Java 中生成动态 InputStream?

在eclipse中生成的java代码自动完成

在 Active Directory 环境中生成 JWT

如何在 Python 中生成一个新的独立进程

是否可以在flutlab中生成flutter .ipa文件?

是否可以在调整频率的同时在 C# 中生成恒定的声音?