У меня есть 2 серверных узла, работающих вместе с искровым работником. Я использую общий RDD зажигания, чтобы сохранить фрейм данных. Мой код отлично работает, когда я работаю только с одним серверным узлом, если я запускаю оба серверных узла, код не работает с
Сетка находится в недопустимом состоянии для выполнения этой операции. Он либо еще не запущен, либо уже запущен, либо остановлен [gridName = null, state = STOPPING]
DiscoverySpi настроен, как показано ниже
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<!--
Ignite provides several options for automatic discovery that can be used
instead os static IP based discovery. For information on all options refer
to our documentation: http://apacheignite.readme.io/docs/cluster-config
-->
<!-- Uncomment static IP finder to enable static-based discovery of initial nodes. -->
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
<!--<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">-->
<property name="shared" value="true"/>
<property name="addresses">
<list>
<!-- In distributed environment, replace with actual host IP address. -->
<value>v-in-spark-01:47500..47509</value>
<value>v-in-spark-02:47500..47509</value>
</list>
</property>
</bean>
</property>
</bean>
</property>
Я знаю, что это исключение обычно означает, что экземпляр зажигания либо не запущен, либо остановлен, и операция выполняется с тем же, но я не думаю, что это так по причинам, что с одним серверным узлом он работает нормально, а также я явно не закрываю экземпляр зажигания в моем программа.
Также в моем потоке кода я выполняю операции в транзакции, которая работает, так что это похоже на
- создать cache1: отлично работает
- Создать cache2: отлично работает
- поместить значение в cache1; работает отлично
- igniteRDD.saveValues в cache2: этот шаг завершается ошибкой из-за вышеупомянутого исключения.
ИСПОЛЬЗУЙТЕ эту ссылку для полной трассировки ошибки, вызванной частью, также вставленной ниже.
Caused by: java.lang.IllegalStateException: Grid is in invalid state to perform this operation. It either not started yet or has already being or have stopped [gridName=null, state=STOPPING]
at org.apache.ignite.internal.GridKernalGatewayImpl.illegalState(GridKernalGatewayImpl.java:190)
at org.apache.ignite.internal.GridKernalGatewayImpl.readLock(GridKernalGatewayImpl.java:90)
at org.apache.ignite.internal.IgniteKernal.guard(IgniteKernal.java:3151)
at org.apache.ignite.internal.IgniteKernal.getOrCreateCache(IgniteKernal.java:2739)
at org.apache.ignite.spark.impl.IgniteAbstractRDD.ensureCache(IgniteAbstractRDD.scala:39)
at org.apache.ignite.spark.IgniteRDD$$anonfun$saveValues$1.apply(IgniteRDD.scala:164)
at org.apache.ignite.spark.IgniteRDD$$anonfun$saveValues$1.apply(IgniteRDD.scala:161)
at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$28.apply(RDD.scala:883)
at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$28.apply(RDD.scala:883)
at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1897)
at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1897)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:70)
at org.apache.spark.scheduler.Task.run(Task.scala:85)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:274)
... 3 more</pre>