我正在三个节点的集群上执行Apache 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)
其中giordano-2-2-100-1是作业任务管理器的地址。 我将任务槽的数量设置为等于机器核心(2)和堆内存相应于meminfo显示的可用内存。
在执行期间(出现错误之前)我观察了cpu的使用情况,我注意到作业任务管理器的两个核心正在工作(每个至少50%,有时甚至是100%),而另一个两个节点(任务管理器)完全免费,CPU使用率约为0%。
我正确设置了jobmanager的rpc地址并正确填充了slaves文件:
giordano-2-2-100-1
giordano-2-2-100-2
giordano-2-2-100-3
此外,我使用主节点中的ping
来验证其他节点是否可以访问并且没有问题,并且telnet
来自任务管理器以验证作业管理器是否可访问,在这种情况下也是如此一切都好。
老实说,我对我做错了什么没有更多的想法......
此外,我尝试在我的笔记本电脑(双核)上执行程序,设置一个单节点集群,该集群具有与真实集群和同一个jar相同的配置。在这种情况下,一切都运作良好,所以我悄悄地确定问题在于职位经理。
P.S。在堆栈溢出时,我发现了同样问题的回复:TaskManager loss/killed但我不明白如何设置不同的垃圾收集器。
答案 0 :(得分:0)
当一个任务管理器内存不足以及GC花费太多时间试图释放一些内存时,就会发生这个问题。
尝试使用更多Ram或降低任务的内存要求。