ignite的SharedRDD代码在单个服务器的设置上起作用,但在添加其他服务器时异常失败

ignite的SharedRDD代码在单个服务器的设置上起作用,但在添加其他服务器时异常失败,ignite,Ignite,我有两个服务器节点与spark worker并置运行。我正在使用shared ignite RDD保存数据帧。当我只使用一个服务器节点时,我的代码可以正常工作,如果我同时启动两个服务器节点,代码就会失败 网格处于无效状态,无法执行此操作。它要么尚未启动,要么已经或已经停止[gridName=null,state=STOPPING] DiscoverySpi的配置如下所示 <property name="discoverySpi"> <bean class="or

我有两个服务器节点与spark worker并置运行。我正在使用shared ignite 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>

v-in-spark-01:47500..47509
v-in-spark-02:47500..47509
我知道此异常通常意味着ignite instance未启动或停止,并尝试使用相同的操作,但我认为情况并非如此,因为使用单个服务器节点时,它工作正常,而且我没有在程序中显式关闭ignite实例

同样,在我的代码流中,我在事务中执行操作,这是可行的,所以

  • 创建缓存1:工作正常
  • 创建缓存2:工作正常
  • 将值放入cache1;很好
  • cache2上的igniteRDD.saveValues:此步骤失败,出现上述异常
  • 下面也贴了由零件引起的

    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>
    
    原因:java.lang.IllegalStateException:网格处于无效状态,无法执行此操作。它尚未启动,或者已经或已经停止[gridName=null,state=STOPPING]
    位于org.apache.ignite.internal.GridKernalGatewayImpl.illegalState(GridKernalGatewayImpl.java:190)
    位于org.apache.ignite.internal.GridKernalGatewayImpl.readLock(GridKernalGatewayImpl.java:90)
    位于org.apache.ignite.internal.IgniteKernal.guard(IgniteKernal.java:3151)
    位于org.apache.ignite.internal.IgniteKernal.getOrCreateCache(IgniteKernal.java:2739)
    位于org.apache.ignite.spark.impl.IgniteAbstractRDD.ensureCache(IgniteAbstractRDD.scala:39)
    在org.apache.ignite.spark.IgniteRDD$$anonfun$saveValues$1.apply上(IgniteRDD.scala:164)
    位于org.apache.ignite.spark.IgniteRDD$$anonfun$saveValues$1.apply(IgniteRDD.scala:161)
    位于org.apache.spark.rdd.rdd$$anonfun$foreachPartition$1$$anonfun$apply$28.apply(rdd.scala:883)
    位于org.apache.spark.rdd.rdd$$anonfun$foreachPartition$1$$anonfun$apply$28.apply(rdd.scala:883)
    位于org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1897)
    位于org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1897)
    位于org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:70)
    位于org.apache.spark.scheduler.Task.run(Task.scala:85)
    位于org.apache.spark.executor.executor$TaskRunner.run(executor.scala:274)
    ... 3个以上
    
    当您仍在尝试运行作业时,嵌入在executor进程中的节点似乎由于某种原因而停止。据我所知,发生这种情况的唯一方法是停止执行程序。会是这样吗?日志中除了跟踪之外还有其他内容吗?

    在哪里有此异常?你能把整个痕迹都给我看一下吗?我是齐柏林飞艇的笔记本。添加完整的stacktrace更新:我仍然面临这个问题,但问题并不一致,这意味着有时我会遇到多个服务器节点的问题,有时它工作正常,目前不确定是什么导致了这个问题。代码没有变化,或者setupExecutor进程没有停止(只是想澄清一下executor进程,你是说spark进程,对吗?),在日志中,除了跟踪之外,我不喜欢其他任何东西,我今天再次遇到了这个异常,并试图看看到目前为止是否还能找到其他东西,我发现的模式是,当我通过删除工作文件夹启动ignite服务器时,它会工作,否则会出现错误(但对此不是很确定)