当apache ignite未启动时,如何停止应用程序?

当apache ignite未启动时,如何停止应用程序?,ignite,Ignite,我有一个用scala编写的示例spark应用程序,它使用ApacheIgnite将数据推送到缓存。据我所知,我们必须启动ignite.sh才能运行应用程序。但是如果点火没有启动,应用程序将永远挂起。我尝试更改默认的ignite配置,但没有用 当ignite node未启动时,是否有方法终止应用程序?默认情况下,客户端节点将无限期地等待至少一个服务器节点启动。如果没有服务器,您可以将其配置为在特定超时后失败: <bean class="org.apache.ignite.configurat

我有一个用scala编写的示例spark应用程序,它使用ApacheIgnite将数据推送到缓存。据我所知,我们必须启动ignite.sh才能运行应用程序。但是如果点火没有启动,应用程序将永远挂起。我尝试更改默认的ignite配置,但没有用


当ignite node未启动时,是否有方法终止应用程序?

默认情况下,客户端节点将无限期地等待至少一个服务器节点启动。如果没有服务器,您可以将其配置为在特定超时后失败:

<bean class="org.apache.ignite.configuration.IgniteConfiguration">
    <property name="discoverySpi">
        <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
            <property name="joinTimeout" value="60000"/>
        </bean>
    </property>
</bean>

连接超时属性需要设置为TCPDiscoverSPI,但我们不能将发现api对象集与配置或配置xml一起使用,因为它将引发任务不可序列化异常。下面的代码非常适合这种情况,因为它在分布式模式下工作,SPI不是可串行化的类,无法在分布式模式下共享,spark希望每个函数都是这样

val ic = new IgniteContext[String, String](sc,() => {
      val cfg = new IgniteConfiguration();
      val tc = new TcpDiscoverySpi();
      tc.setJoinTimeout(60000);
      cfg.setDiscoverySpi(tc);
      cfg})

这就解决了这两个问题

我认为,spark不会成功。它可能在正常应用程序中工作。但是,尽管有火花。如图所示,配置和SPI将引发task not serializable异常。我找到了解决方案,并将代码粘贴到下面使用XML时,您会观察到哪种不可序列化的异常?通常,XML只是一个Spring文件,用于构造
IgniteConfiguration
对象,然后用于创建
IgniteContext
。因此,这不应该有任何区别。