Fehler ExecutorLostFailure beim ausführen einer Aufgabe in der Funke
, wenn ich versuche, führen Sie es auf diesen Ordner, es wirft mich ExecutorLostFailure jedesmal, wenn
Hallo ich bin ein Anfänger in der Funke. Ich versuche zu laufen, einen job auf Spark 1.4.1 mit 8 slave-Knoten mit 11.7 GB Speicher jeweils 3,2 GB Festplatte . Ich bin mit den Funken Aufgabe aus einem der slave-Knoten (ab 8 Knoten) (also mit 0,7 Speicher Bruchteil ca 4.8 gb nur verfügbar auf jedem Knoten )und die Verwendung Sofort als Cluster-Manager. Ich bin mit dieser Konfiguration :
spark.master mesos://uc1f-bioinfocloud-vamp-m-1:5050
spark.eventLog.enabled true
spark.driver.memory 6g
spark.storage.memoryFraction 0.7
spark.core.connection.ack.wait.timeout 800
spark.akka.frameSize 50
spark.rdd.compress true
Ich versuche zu Laufen Spark MLlib Naive Bayes-Algorithmus auf einen Ordner, um 14 GB Daten. (Es ist kein Problem, wenn ich die Ausführung der Aufgabe auf einen 6 GB Ordner) ich lese diese Ordner von google storage als RDD und was 32 partition als parameter.(Ich habe versucht, die Erhöhung der partition). Dann mit TF zu erstellen, feature-Vektor und Vorhersagen auf der Grundlage, dass.
Aber wenn ich versuche, führen Sie es auf diesen Ordner, es wirft mich ExecutorLostFailure jedesmal, wenn. Ich habe versucht, verschiedene Konfigurationen, aber nichts hilft. Vielleicht bin ich etwas fehlt einfach, aber nicht in der Lage, um herauszufinden. Jede Hilfe oder Anregung sehr wertvoll.
Protokoll:
15/07/21 01:18:20 ERROR TaskSetManager: Task 3 in stage 2.0 failed 4 times; aborting job
15/07/21 01:18:20 INFO TaskSchedulerImpl: Cancelling stage 2
15/07/21 01:18:20 INFO TaskSchedulerImpl: Stage 2 was cancelled
15/07/21 01:18:20 INFO DAGScheduler: ResultStage 2 (collect at /opt/work/V2ProcessRecords.py:213) failed in 28.966 s
15/07/21 01:18:20 INFO DAGScheduler: Executor lost: 20150526-135628-3255597322-5050-1304-S8 (epoch 3)
15/07/21 01:18:20 INFO BlockManagerMasterEndpoint: Trying to remove executor 20150526-135628-3255597322-5050-1304-S8 from BlockManagerMaster.
15/07/21 01:18:20 INFO DAGScheduler: Job 2 failed: collect at /opt/work/V2ProcessRecords.py:213, took 29.013646 s
Traceback (most recent call last):
File "/opt/work/V2ProcessRecords.py", line 213, in <module>
secondPassRDD = firstPassRDD.map(lambda ( name, title, idval, pmcId, pubDate, article, tags , author, ifSigmaCust, wclass): ( str(name), title, idval, pmcId, pubDate, article, tags , author, ifSigmaCust , "Yes" if ("PMC" + pmcId) in rddNIHGrant else ("No") , wclass)).collect()
File "/usr/local/spark/python/lib/pyspark.zip/pyspark/rdd.py", line 745, in collect
File "/usr/local/spark/python/lib/py4j-0.8.2.1-src.zip/py4j/java_gateway.py", line 538, in __call__
File "/usr/local/spark/python/lib/py4j-0.8.2.1-src.zip/py4j/protocol.py", line 300, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 3 in stage 2.0 failed 4 times, most recent failure: Lost task 3.3 in stage 2.0 (TID 12, vamp-m-2.c.quantum-854.internal): ExecutorLostFailure (executor 20150526-135628-3255597322-5050-1304-S8 lost)
Driver stacktrace:
at org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1266)
at org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1257)
at org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1256)
at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
at org.apache.spark.scheduler.DAGScheduler.abortStage(DAGScheduler.scala:1256)
at org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:730)
at org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:730)
at scala.Option.foreach(Option.scala:236)
at org.apache.spark.scheduler.DAGScheduler.handleTaskSetFailed(DAGScheduler.scala:730)
at org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1450)
at org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1411)
at org.apache.spark.util.EventLoop$$anon$1.run(EventLoop.scala:48)
15/07/21 01:18:20 INFO BlockManagerMaster: Removed 20150526-135628-3255597322-5050-1304-S8 successfully in removeExecutor
15/07/21 01:18:20 INFO DAGScheduler: Host added was in lost list earlier:vamp-m-2.c.quantum-854.internal
Jul 21, 2015 1:01:15 AM INFO: parquet.hadoop.ParquetFileReader: Initiating action with parallelism: 5
15/07/21 01:18:20 INFO SparkContext: Invoking stop() from shutdown hook
{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":11,"Index":6,"Attempt":2,"Launch Time":1437616381852,"Executor ID":"20150526-135628-3255597322-5050-1304-S8","Host":"uc1f-bioinfocloud-vamp-m-2.c.quantum-device-854.internal","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Accumulables":[]}}
{"Event":"SparkListenerExecutorRemoved","Timestamp":1437616389696,"Executor ID":"20150526-135628-3255597322-5050-1304-S8","Entfernt Grund":"Verloren Vollstrecker"}
{"Ereignis":"SparkListenerTaskEnd","Stage ID":2,"Bühne Versuch ID":0,"Task Type":"ResultTask","Task-Ende der Vernunft":{"Reason":"ExecutorLostFailure","Executor ID":"20150526-135628-3255597322-5050-1304-S8"},"Task Info":{"Task ID":11,"Index":6,"Versuch":2,"Start":1437616381852,"Vollstrecker ID":"20150526-135628-3255597322-5050-1304-S8","Host":"uc1f-bioinfocloud-vamp-m-2.c.quantum-device-854.internal","Locality":"PROCESS_LOCAL","Speculative":false,"Immer Ergebnis der Zeit":0,"Finish Time":1437616389697,"Failed":true,"Accumulables":[]}}
{"Ereignis":"SparkListenerExecutorAdded","Timestamp":1437616389707,"Executor ID":"20150526-135628-3255597322-5050-1304-S8","Vollstrecker " Info":{"Host":"uc1f-bioinfocloud-vamp-m-2.c.quantum-Gerät-854.internal","Total Core":1,"Log-Urls":{}}}
{"Ereignis":"SparkListenerTaskStart","Stage ID":2,"Bühne Versuch ID":0,"Task Info":{"Task ID":12,"Index":6,"Versuch":3,"Start":1437616389702,"Vollstrecker ID":"20150526-135628-3255597322-5050-1304-S8","Host":"uc1f-bioinfocloud-vamp-m-2.c.quantum-device-854.internal","Locality":"PROCESS_LOCAL","Speculative":false,"Immer Ergebnis der Zeit":0,"Finish Time":0,"Failed":false,"Accumulables":[]}}
{"Ereignis":"SparkListenerExecutorRemoved","Timestamp":1437616397743,"Executor ID":"20150526-135628-3255597322-5050-1304-S8","Entfernt Grund":"Verloren Vollstrecker"}
{"Ereignis":"SparkListenerTaskEnd","Stage ID":2,"Bühne Versuch ID":0,"Task Type":"ResultTask","Task-Ende der Vernunft":{"Reason":"ExecutorLostFailure","Executor ID":"20150526-135628-3255597322-5050-1304-S8"},"Task Info":{"Task ID":12,"Index":6,"Versuch":3,"Start":1437616389702,"Vollstrecker ID":"20150526-135628-3255597322-5050-1304-S8","Host":"uc1f-bioinfocloud-vamp-m-2.c.quantum-device-854.internal","Locality":"PROCESS_LOCAL","Speculative":false,"Immer Ergebnis der Zeit":0,"Finish Time":1437616397743,"Failed":true,"Accumulables":[]}}
{"Ereignis":"SparkListenerStageCompleted","Bühne " Info":{"Stage ID":2,"Bühne Versuch ID":0,"Stage Name":"sammeln und in /opt/Arbeit/V2ProcessRecords.py:215","Anzahl Aufgaben":72,"RDD, "Info":[{"RDD, "ID":6,"Name":"PythonRDD","Parent-IDs":[0],"Storage " Level":{"Einsatz der Festplatte":false,"Speicher":false,"Verwenden ExternalBlockStore":false,"Deserialisiert":false,"Replikation":1},"Anzahl der Partitionen":72,"Anzahl der Cache-Partitionen":0,"Memory Size":0,"ExternalBlockStore Größe":0,"Disk Size":0},{"RDD ID":0,"Name":"gs://uc1f-bioinfocloud-vamp-m/literature/xml/P*/*.nxml","Scope":"{\"id\":\"0\",\"name\":\"wholeTextFiles\"}","Parent-IDs":[],"Storage " Level":{"Einsatz der Festplatte":false,"Speicher":false,"Verwenden ExternalBlockStore":false,"Deserialisiert":false,"Replikation":1},"Anzahl der Partitionen":72,"Anzahl der Cache-Partitionen":0,"Memory Size":0,"ExternalBlockStore Größe":0,"Disk Size":0}],"Parent-IDs":[],"Details":"","Bearbeitungszeit":1437616365566,"Vollendung der Zeit":1437616397753,"Fehlerursache":"Job abgebrochen wegen Nierenversagen: Aufgabe 6 in der Stufe 2.0 gescheitert, 4 mal, letzten Ausfall: Lost Aufgabe 6.3 in der Stufe 2.0 (TID 12, uc1f-bioinfocloud-vamp-m-2.c.quantum-Gerät-854.intern): ExecutorLostFailure (executor 20150526-135628-3255597322-5050-1304-S8 verloren)\nDriver stacktrace:","Accumulables":[]}}
{"Ereignis":"SparkListenerJobEnd","Job ID":2,"Vollendung der Zeit":1437616397755,"Job-Result":{"Result":"JobFailed","Ausnahme":{"Message":"Job abgebrochen wegen Nierenversagen: Aufgabe 6 in der Stufe 2.0 gescheitert, 4 mal, letzten Ausfall: Lost Aufgabe 6.3 in der Stufe 2.0 (TID 12, uc1f-bioinfocloud-vamp-m-2.c.quantum-Gerät-854.intern): ExecutorLostFailure (executor 20150526-135628-3255597322-5050-1304-S8 verloren)\nDriver stacktrace:","Stack-Trace":[{"Deklarieren Class":"org.apache.spark.scheduler.DAGScheduler","Methode " Name":"org$apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages","Datei Name":"DAGScheduler.scala","Zeilennummer":1266},{"Deklarieren Class":"org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1","Methode " Name":"übernehmen","Datei Name":"DAGScheduler.scala","Zeilennummer":1257},{"Deklarieren Class":"org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1","Methode " Name":"übernehmen","Datei Name":"DAGScheduler.scala","Zeilennummer":1256},{"Deklarieren Class":"scala.Sammlung.veränderlich.ResizableArray$Klasse","Methode " Name":"foreach","Datei Name":"ResizableArray.scala","Zeilennummer":59},{"Deklarieren Class":"scala.Sammlung.veränderlich.ArrayBuffer","Methode " Name":"foreach","Datei Name":"ArrayBuffer.scala","Zeilennummer":47},{"Deklarieren Class":"org.apache.spark.scheduler.DAGScheduler","Methode " Name":"abortStage","Datei Name":"DAGScheduler.scala","Zeilennummer":1256},{"Deklarieren Class":"org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1","Methode " Name":"übernehmen","Datei Name":"DAGScheduler.scala","Zeilennummer":730},{"Deklarieren Class":"org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1","Methode " Name":"übernehmen","Datei Name":"DAGScheduler.scala","Zeilennummer":730},{"Deklarieren Class":"scala.- Option","Methode " Name":"foreach","Datei Name":"Option.scala","Zeilennummer":236},{"Deklarieren Class":"org.apache.spark.scheduler.DAGScheduler","Methode " Name":"handleTaskSetFailed","Datei Name":"DAGScheduler.scala","Zeilennummer":730},{"Deklarieren Class":"org.apache.spark.scheduler.DAGSchedulerEventProcessLoop","Methode " Name":"onReceive","Datei Name":"DAGScheduler.scala","Zeilennummer":1450},{"Deklarieren Class":"org.apache.spark.scheduler.DAGSchedulerEventProcessLoop","Methode " Name":"onReceive","Datei Name":"DAGScheduler.scala","Zeilennummer":1411},{"Deklarieren Class":"org.apache.spark.util.EventLoop$$anon$1","Methode " Name":"Ausführung","Datei Name":"EventLoop.scala","Zeilennummer":48}]}}}
- Spark version 1.4.1
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser Fehler Auftritt, da ein task konnte nicht mehr als vier mal.
Versuchen, erhöhen Sie die Parallelität in den cluster mit den folgenden parameter.
Legen Sie den parallelism-Wert auf 2 bis 3 mal die Anzahl der verfügbaren Kerne auf den cluster. Wenn das nicht funktioniert. versuchen Sie Erhöhung der Parallelität in einer exponentiellen Weise. ich.e wenn Ihre aktuelle Parallelität nicht arbeiten, multiplizieren Sie ihn mit zwei und so weiter. Auch ich habe beobachtet, dass es hilft, wenn Ihr level an Parallelität ist eine Primzahl vor allem, wenn Sie groupByKkey.
Es ist schwer zu sagen, was das problem ist, ohne das Protokoll des gescheiterten Anbieters und nicht der Fahrer, aber die meisten wahrscheinlich, es ist ein Speicher problem. Erhöhen Sie die Nummer der partition deutlich (wenn Ihre aktuelle ist 32 versuchen 200)
Ich hatte dieses Problem, und das problem war für mich sehr hohe Inzidenz der Schlüssel in einer
reduceByKey
Aufgabe. Das war (glaube ich) was zu einer massiven Liste zu sammeln, die auf eine der Testamentsvollstrecker, die würde dann werfen OOM Fehler.Die Lösung für mich war einfach herausfiltern keys mit hoher Bevölkerung vor den
reduceByKey
, aber ich Schätze, dass dies kann oder kann nicht möglich sein, abhängig von Ihrer Anwendung. Ich muss nicht alle meine Daten sowieso.Die häufigste Ursache von ExecutorLostFailure gemäß meinem Verständnis ist OOM in Vollzieher.
Um Behebung des OOM geht, muss man herausfinden, was genau es verursacht. Einfach die Erhöhung der Standard-Parallelität oder die Erhöhung der Testamentsvollstrecker Speicher ist nicht eine strategische Lösung.
Wenn man sich anschaut, was die zunehmende Parallelität tun, ist es versucht, mehr Vollstrecker, so dass jeder Testamentsvollstrecker kann die Arbeit auf immer weniger Daten. Aber wenn Ihre Daten verzerrt, so dass der Schlüssel auf die Daten der Partitionierung passiert (für Parallelität) mehr Daten hat, einfach zunehmende Parallelität ohne Wirkung.
Ebenso durch die Erhöhung der Testamentsvollstrecker Speicher wird eine sehr ineffiziente Art und Weise der übergabe zu einem solchen Szenario, als wenn nur ein Testamentsvollstrecker scheitert mit ExecutorLostFailure , anfordern von mehr Speicher für alle Sänger machen Ihre Anwendung benötigen viel mehr Speicher dann tatsächlich erwartet.