2016-11-23 2 views
1

2つのサーバーノードがspark workerと連携して実行されています。私はデータフレームを保存するために共有の着火RDDを使用しています。両方のサーバーノードを起動した場合、コードが正常に動作するサーバーノードが1つしかない場合コードが正常に動作しないigniteのSharedRDDコードは単一サーバーのセットアップで動作しますが、追加のサーバーを追加すると例外が発生します。

グリッドが無効な状態でこの操作を実行します。それ[gridName = nullで、状態= 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> 

以下のように設定されているいずれかの私は、この例外は、一般的に開始したいずれかのinstanaceを点火ないことや知っています停止し、操作は同じで試してみましたが、私はこれが単一サーバノードでうまく動作し、私のプログラムでigniteインスタンスを明示的に終了していないという理由でそうはならないと思います。私のコードの流れでも

私は作品のトランザクションで操作を実行しませんので、

  1. はcache1を作成するようにそれがあるが:正常に動作し
  2. cache2を作成します:cache1に罰金
  3. プット値を動作します。うまく動作します
  4. igniteRDD.saveValues on cache2:この手順は、上記の例外で失敗します。パーツによって引き起こさ

USE this link for complete error trace それでもジョブを実行しようとしている間、エグゼキュータ・プロセスに組み込まれたノードが何らかの理由で停止しているように見えます

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

この例外はどこにありますか?トレース全体を表示できますか? –

+0

私は実行中です。ゼプトリンのスパークノートです。 – sourabh

+0

update:私はまだこの問題に直面していますが、問題は一貫していません。いつか複数のサーバーノードでこの問題に直面して、時にはうまくいきます。 **コードやセットアップに変更はありません** – sourabh

答えて

0

もここの下に貼り付けられます。これが実現する唯一の方法は、私の知る限り、エグゼキュータプロセスを停止することです。これは事実でしょうか?トレース以外のログには何かありますか?

+0

Executorプロセスは停止しませんでした(あなたはスパークプロセスを意味するエグゼキュータプロセスによって明確になるでしょう)、そしてログではトレースから離れて他のものを好きになりませんでした。今日この例外があります。他に見つかったものがあるかどうかを確認しようとしています – sourabh

+0

私が見つけたパターンは、作業フォルダを削除してサーバを起動させるとエラーになります。 – sourabh

関連する問題