2015-12-30 89 views
2

我有一个用scala编写的示例spark应用程序,用apache点燃将数据推送到缓存。据我所知,我们必须启动ignite.sh才能运行应用程序。但如果点火没有启动,应用程序将永远挂起。我试着改变默认的点火配置,但没用。如何在apache ignite未启动时停止应用程序?

点火节点没有启动时,有没有办法杀死应用程序?

回答

1

的加入超时属性需要被设置为TCPDiscoverSPI,但我们不能使用配置或配置XML设置发现API对象,如它会抛出任务而不是可序列化的异常。下面是完美适用于这种情况的代码,因为它在分布式模式下工作,并且SPI不是可串行化类以分布式模式共享,这种情况引发了每个函数的期望。

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

这清除了这两个问题。

+0

以下,您在使用XML时看到了什么样的不可序列化异常?一般来说,XML只是一个Spring文件,用于构造一个IgniteConfiguration对象,然后用它来创建IgniteContext。所以它不应该有任何区别。 –

2

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

<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> 
+0

我认为,这不会有火花。它可能与正常的应用程序一起工作。但是,没有火花。因为,配置和SPI会抛出任务而不是可序列化的异常。我发现了这个解决方案,并且我正在将代码粘贴到 – srujana

相关问题