3 개의 노드 클러스터에서 Apache Flink 프로그램을 실행하고 있습니다. 이들 중 하나는 jobmanager 및 taskmanager로 작동합니다. 다른 두 명은 taskmanager입니다. taskmanager가 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-1 100-1은 작업 - 작업 관리자의 주소입니다. 작업 슬롯 수를 컴퓨터 코어 (2)와 같게 설정하고 그에 따라 힙 메모리를 meminfo가 표시하는 사용 가능한 메모리에 맞게 설정합니다.
실행 도중 (오류가 나타나기 전에) 나는 CPU 사용량을 보았고 작업 작업 관리자의 두 핵심이 작동하는 것으로 나타났습니다. (각 경우 50 % 이상, 때로는 100 %조차도) 다른 두 노드 (작업 관리자)는 완전히 무료이며 CPU 사용률은 0 %입니다.
은 내가 jobmanager의 제대로 RPC 주소를 설정하고 작성 제대로 넣어 파일을 노예 일 :giordano-2-2-100-1
giordano-2-2-100-2
giordano-2-2-100-3
이 또한 내가 다른 노드에 도달 할 수 있는지 확인하기 위해 마스터 노드에서
ping
을 사용하고 괜찮아요, 그리고에서
telnet
작업 관리자가 작업 관리자에 연결할 수 있는지 확인합니다.이 경우에도 모든 항목이 정상입니다.
솔직히
이 또한 내 노트북 (듀얼 코어)의 동일한 구성으로 단일 노드 클러스터를 설정하는 프로그램을 실행하려고 ... 내가 잘못 일에 대해 더 이상 생각이 없다 실제 클러스터와 같은 항아리. 이 경우 모든 것이 완벽하게 작동하므로 문제가 작업 관리자에 있음을 조용히 확신합니다.P. 스택 오버플로에서 같은 문제의 답장을 찾았습니다. TaskManager loss/killed하지만 다른 가비지 수집기를 설정하는 방법을 이해하지 못합니다.
작업을 시작하는 병렬 처리 란 무엇입니까? 'JobManager'가 실행되고있는 머신에서만 실행되는 CPU 집약적 인 작업을 수행 할 수 있습니까? 그러면 하트 비트가 올바르게 처리되지 않을 수 있습니다. JM이 실행중인 시스템에서 TM을 시작하지 않으시겠습니까? JM과 TM의 로그를 공유하면 문제를 해결하는 데 도움이 될 수 있습니다. –
나는 2에서 작동하는 운영자와 1에서 작동하는 운영자가 있기 때문에 병렬 처리에 대해 설명했습니다. 나는 더 많은 실험을 수행했습니다. 특정 부하가 발생할 때까지는 클러스터가 작업을 올바르게 수행 할 수 있지만 하나의 노드 만 사용하면 더 많은 부하 (예 : 다른 데이터에 연산자를 복제)를 추가하면 이전 오류가 표시됩니다. G1 가비지 컬렉터를 설정했지만 결과가 없습니다. 계속 ... –
나는 1JM과 2M만을 구성하는 힌트를 따라 가면서 비교적 가벼운 프로그램을 실행했습니다. 이것은 올바르게 실행되지만이 경우에도 하나의 노드 (n.3)에서만 실행됩니다. 그 중 각 코어는 CPU 사용량의 92 % 이상을 사용 중이었고 메모리는 80-85 % 정도였습니다. 나는 로그를 첨부한다. (stackOV_1JM_2TM_OK) : https://www.dropbox.com/s/w6uvgmhdg2bom49/stackOV_1JM_2TM_OK.zip?dl=0 –