apache ignite 未启动时如何停止应用程序?
How to stop the application when apache ignite is not started?
我有一个用 scala 编写的示例 spark 应用程序,用于使用 apache ignite 将数据推送到缓存。据我所知,我们必须启动 ignite.sh 才能 运行 应用程序。但如果 ignite 没有启动,应用程序将永远挂起。我尝试更改默认的点燃配置,但没有用。
有没有办法在 ignite 节点未启动时终止应用程序?
默认情况下,客户端节点将无限期地等待至少一个服务器节点启动。如果没有服务器,您可以将其配置为在特定超时后失败:
<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 不可序列化 class 以在分布式模式下共享,spark 希望每个函数都是。
val ic = new IgniteContext[String, String](sc,() => {
val cfg = new IgniteConfiguration();
val tc = new TcpDiscoverySpi();
tc.setJoinTimeout(60000);
cfg.setDiscoverySpi(tc);
cfg})
这两个问题都解决了。
我有一个用 scala 编写的示例 spark 应用程序,用于使用 apache ignite 将数据推送到缓存。据我所知,我们必须启动 ignite.sh 才能 运行 应用程序。但如果 ignite 没有启动,应用程序将永远挂起。我尝试更改默认的点燃配置,但没有用。
有没有办法在 ignite 节点未启动时终止应用程序?
默认情况下,客户端节点将无限期地等待至少一个服务器节点启动。如果没有服务器,您可以将其配置为在特定超时后失败:
<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 不可序列化 class 以在分布式模式下共享,spark 希望每个函数都是。
val ic = new IgniteContext[String, String](sc,() => {
val cfg = new IgniteConfiguration();
val tc = new TcpDiscoverySpi();
tc.setJoinTimeout(60000);
cfg.setDiscoverySpi(tc);
cfg})
这两个问题都解决了。