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

时间:2018-10-31 06:52:48

标签: apache-spark ignite

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

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

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

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

是否有任何方法可以告诉Spark在已经存在的流程(在本例中为Ignite节点流程)中创建其执行程序?

可以实现 ExternalClusterManager 来实现这一目标吗?

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

1 个答案:

答案 0 :(得分:3)

是的,您的总体方向是合理的。可以说,Ignite不推荐使用的嵌入式部署是嵌入式的“向后”-将Ignite嵌入Spark时效果不佳,但是如果将Spark嵌入Ignite,效果会更好。

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

我认为Ignite待办事项列表中没有任何未解决的问题,但是您可以在Ignite dev mailing list上与您分享建议。

现在是主要部分。根据您的建议,您要实现的全部是将进程间通信替换为进程内通信。通常,在同一主机上进行通信并不昂贵。您可能会从中看到一些性能提升,但是只有在有确凿的证据表明这将解决实际问题时,我才开始实施它。