Код SharedRDD для ignite работает при настройке одного сервера, но не работает, за исключением случаев, когда добавляется дополнительный сервер.

У меня есть 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>

Я знаю, что это исключение обычно означает, что экземпляр зажигания либо не запущен, либо остановлен, и операция выполняется с тем же, но я не думаю, что это так по причинам, что с одним серверным узлом он работает нормально, а также я явно не закрываю экземпляр зажигания в моем программа.

Также в моем потоке кода я выполняю операции в транзакции, которая работает, так что это похоже на

  1. создать cache1: отлично работает
  2. Создать cache2: отлично работает
  3. поместить значение в cache1; работает отлично
  4. 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>

person sourabh    schedule 23.11.2016    source источник
comment
Где у вас это исключение? Можете ли вы показать весь след?   -  person Valentin Kulichenko    schedule 23.11.2016
comment
Я записываю записную книжку Spark от zeppelin. добавление полной трассировки стека выше   -  person sourabh    schedule 24.11.2016
comment
обновление: я все еще сталкиваюсь с этим, но проблема не согласуется, означает, что когда-то я сталкиваюсь с этой проблемой с несколькими серверными узлами, и иногда она работает нормально, не уверен, что до сих пор вызывает эту проблему. и Никаких изменений в коде или настройке   -  person sourabh    schedule 28.11.2016


Ответы (1)


Похоже, что узел, встроенный в процесс исполнителя, по какой-то причине остановлен, пока вы все еще пытаетесь запустить задание. Насколько мне известно, единственный способ сделать это - остановить процесс исполнителя. Может ли это быть так? В журнале есть что-нибудь кроме трассировки?

person Valentin Kulichenko    schedule 29.11.2016
comment
Процесс-исполнитель не останавливался (просто для того, чтобы быть понятным процессу-исполнителю, вы имели в виду искровой процесс, верно?), И в журналах я не мог найти ничего, кроме трассировки, я снова получил это исключение сегодня и пытался увидеть, может ли что-то еще быть нашел - person sourabh; 29.11.2016
comment
До сих пор я обнаружил, что когда я начинаю зажигать серверы, удаляя рабочую папку, он работает, иначе выдает ошибку (но не очень уверен в этом) - person sourabh; 29.11.2016