2017-09-15 9 views
0

私は3つのノードのクラスタでApache Flinkプログラムを実行しています。 これらのうちの1つは、jobmanagerとtaskmanagerとしても機能します。他の2つはタスクマネージャです。タスクマネージャがFlinkクラスタで殺されました

私は私のプログラムを起動すると(私はjobmanagerでそれを行う)私は(プログラムの無実の実行分後)、次のエラーを取得:

java.lang.Exception: TaskManager was lost/killed: c4211322e77548b791c70d466c138a49 @ giordano-2-2-100-1 (dataPort=37904) 
at org.apache.flink.runtime.instance.SimpleSlot.releaseSlot(SimpleSlot.java:217) 
at org.apache.flink.runtime.instance.SlotSharingGroupAssignment.releaseSharedSlot(SlotSharingGroupAssignment.java:533) 
at org.apache.flink.runtime.instance.SharedSlot.releaseSlot(SharedSlot.java:192) 
at org.apache.flink.runtime.instance.Instance.markDead(Instance.java:167) 
at org.apache.flink.runtime.instance.InstanceManager.unregisterTaskManager(InstanceManager.java:212) 
at org.apache.flink.runtime.jobmanager.JobManager.org$apache$flink$runtime$jobmanager$JobManager$$handleTaskManagerTerminated(JobManager.scala:1228) 
at org.apache.flink.runtime.jobmanager.JobManager$$anonfun$handleMessage$1.applyOrElse(JobManager.scala:1131) 
at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:36) 
at org.apache.flink.runtime.LeaderSessionMessageFilter$$anonfun$receive$1.applyOrElse(LeaderSessionMessageFilter.scala:49) 
at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:36) 
at org.apache.flink.runtime.LogMessages$$anon$1.apply(LogMessages.scala:33) 
at org.apache.flink.runtime.LogMessages$$anon$1.apply(LogMessages.scala:28) 
at scala.PartialFunction$class.applyOrElse(PartialFunction.scala:123) 
at org.apache.flink.runtime.LogMessages$$anon$1.applyOrElse(LogMessages.scala:28) 
at akka.actor.Actor$class.aroundReceive(Actor.scala:467) 
at org.apache.flink.runtime.jobmanager.JobManager.aroundReceive(JobManager.scala:125) 
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516) 
at akka.actor.dungeon.DeathWatch$class.receivedTerminated(DeathWatch.scala:44) 
at akka.actor.ActorCell.receivedTerminated(ActorCell.scala:369) 
at akka.actor.ActorCell.autoReceiveMessage(ActorCell.scala:501) 
at akka.actor.ActorCell.invoke(ActorCell.scala:486) 
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238) 
at akka.dispatch.Mailbox.run(Mailbox.scala:220) 
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397) 
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) 
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) 
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) 
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) 

どこジョルダーノ-2-2- 100-1は、ジョブ・タスク・マネージャのアドレスです。 私はマシンコア(2)に等しいタスクスロットの数とヒープメモリをmeminfoによって示された利用可能なメモリに応じて設定しました。

実行中(エラーが表示される前)、私はCPU使用率を見て、ジョブ・タスク・マネージャの2つのコアが動作していることを確認しました(それぞれ50%以上、時には100%他の2つのノード(タスクマネージャ)は完全に無料で、CPU使用率は0%です。

私はjobmanagerの正確RPCアドレスを設定し、ファイルを置くスレーブと正しく満たさ:

giordano-2-2-100-1 
giordano-2-2-100-2 
giordano-2-2-100-3 

また、私は他のノードが到達可能であり、それは大丈夫ですかどうかを確認するために、マスタノードからpingを使用し、よりtelnetタスクマネージャは、ジョブマネージャが到達可能かどうかを確認します。この場合もすべて正常です。

正直なところ、私は

はさらに、私は私のラップトップ(デュアルコア)の同一構成のシングルノードクラスタを設定する上でプログラムを実行しようとしました...私が間違ってやっていることについて何もより多くのアイデアを持っていません実際のクラスターと同じ瓶。この場合、すべてが完全に機能するので、問題がジョブマネージャーにあることを静かに確信しています。

P.S.スタックオーバーフローで同じ問題のこの返信が見つかりました:TaskManager loss/killedしかし、私は別のガベージコレクタを設定する方法を理解していません。

+0

ジョブを開始する並列性とは何ですか? 'JobManager'が実行されているマシンでのみ実行されるCPU集約型ジョブを実行している可能性はありますか?これにより、ハートビートが正しく処理されなくなる可能性があります。 JMが稼働しているマシンでTMを起動しないでください。 JMとTMのログを共有することも、あなたの問題を解決するのに役立ちます。 –

+0

私は、2で動作する演算子と1で動作する演算子があるので、並列処理についてコメントしました。 私はより多くの実験を実行しました。私は、特定の負荷が発生するまで、クラスターはタスクを正しく実行できますが、負荷を増やすと(たとえば、他のデータに演算子を複製する)、以前のエラーが表示されることに注意しました。 G1ガベージコレクタを設定しましたが、結果はありません。 続行... –

+0

私は1JMと2Mだけを設定してヒントを実行し、比較的軽いプログラムを実行しました。これは正しく実行されますが、この場合でも、1つのノード(n.3)だけで実行されます。その各コアは、CPU使用量の92%以上が忙しく、メモリは約80〜85%でした。私はログ(stackOV_1JM_2TM_OK)を添付しています:https://www.dropbox.com/s/w6uvgmhdg2bom49/stackOV_1JM_2TM_OK.zip?dl=0 –

答えて

0

この問題は、タスクマネージャにメモリ不足が発生し、GCがメモリを解放しようとして時間がかかるときに発生しました。

RAMの使用を増やしたり、タスクのメモリ要件を減らしてください。

関連する問題