Erreur ExecutorLostFailure lors de l'exécution d'une tâche dans Spark
quand je suis en train d'essayer de l'exécuter sur ce dossier, c'est en me jetant ExecutorLostFailure chaque fois que
Salut, je suis un débutant dans Spark. Je suis en train de lancer un travail sur la Spark 1.4.1 avec 8 nœuds esclaves à 11,7 GO de mémoire chaque 3.2 GO de Disque . Je suis en cours d'exécution de l'Étincelle de la tâche à partir de l'une des nœud esclave (à partir de 8 noeuds) (0,7 stockage de la fraction d'environ 4,8 go seulement est disponible sur chaque nœud )et à l'aide de Mesos que le Gestionnaire du Cluster. J'utilise cette configuration :
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
Je suis en train de lancer Étincelle MLlib Naïf de Bayes, l'Algorithme sur un Dossier autour de 14 GO de données. (Il n'y a pas de problème quand je suis en cours d'exécution de la tâche sur un 6 GO de dossier) je suis à la lecture de ce dossier à partir de l'espace de stockage google comme CA et donnant 32 comme partition paramètre.(J'ai tenté d'augmenter la partition). Ensuite, à l'aide de TF à créer la fonction de vecteur et de prédire, sur la base de cela.
Mais quand j'essaie de l'exécuter sur ce dossier, c'est en me jetant ExecutorLostFailure chaque fois que. J'ai essayé différentes configurations, mais rien n'est aidant. Peut-être que je suis absent quelque chose de très basique, mais pas en mesure de comprendre. Toute aide ou suggestion sera très précieux.
Journal est:
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":[]}}
{"Événement":"SparkListenerExecutorRemoved","Timestamp":1437616389696,"Exécuteur testamentaire ID":"20150526-135628-3255597322-5050-1304-S8", la"suppression de la Raison":"Perdu de l'exécuteur testamentaire"}
{"Événement":"SparkListenerTaskEnd","Stade ID":2,"Stade de la Tentative ID":0,"Type de Tâche":"ResultTask","Fin de Tâche de la Raison":{"Raison":"ExecutorLostFailure","Exécuteur testamentaire ID":"20150526-135628-3255597322-5050-1304-S8"}, Les"Infos":{"ID de Tâche":11,"Index":6,"l'attentat":2,"le Temps de Lancement":1437616381852,"Exécuteur testamentaire ID":"20150526-135628-3255597322-5050-1304-S8","Host":"uc1f-bioinfocloud-vamp-m-2.c.quantum-device-854.internal","Locality":"PROCESS_LOCAL","Speculative":false,"l'Obtention de Temps de Résultat":0,"Finish Time":1437616389697,"Échec":true,"Accumulables":[]}}
{"Événement":"SparkListenerExecutorAdded","Timestamp":1437616389707,"Exécuteur testamentaire ID":"20150526-135628-3255597322-5050-1304-S8","Exécuteur testamentaire d'Infos":{"Hôte":"uc1f-bioinfocloud-vamp-m-2.c.quantum-appareil-854.interne","Total des Cœurs":1,"Journal Url":{}}}
{"Événement":"SparkListenerTaskStart","Stade ID":2,"Stade de la Tentative ID":0, Les"Infos":{"ID de Tâche":12,"Index":6,"l'attentat":3,"le Temps de Lancement":1437616389702,"Exécuteur testamentaire ID":"20150526-135628-3255597322-5050-1304-S8","Host":"uc1f-bioinfocloud-vamp-m-2.c.quantum-device-854.internal","Locality":"PROCESS_LOCAL","Speculative":false,"l'Obtention de Temps de Résultat":0,"Finish Time":0,"Échec":false,"Accumulables":[]}}
{"Événement":"SparkListenerExecutorRemoved","Timestamp":1437616397743,"Exécuteur testamentaire ID":"20150526-135628-3255597322-5050-1304-S8", la"suppression de la Raison":"Perdu de l'exécuteur testamentaire"}
{"Événement":"SparkListenerTaskEnd","Stade ID":2,"Stade de la Tentative ID":0,"Type de Tâche":"ResultTask","Fin de Tâche de la Raison":{"Raison":"ExecutorLostFailure","Exécuteur testamentaire ID":"20150526-135628-3255597322-5050-1304-S8"}, Les"Infos":{"ID de Tâche":12,"Index":6,"l'attentat":3,"le Temps de Lancement":1437616389702,"Exécuteur testamentaire ID":"20150526-135628-3255597322-5050-1304-S8","Host":"uc1f-bioinfocloud-vamp-m-2.c.quantum-device-854.internal","Locality":"PROCESS_LOCAL","Speculative":false,"l'Obtention de Temps de Résultat":0,"Finish Time":1437616397743,"Échec":true,"Accumulables":[]}}
{"Événement":"SparkListenerStageCompleted","Scène d'Infos":{"Stade ID":2,"Stade de la Tentative ID":0,"Nom de Scène":"recueillir dans /opt/travail/V2ProcessRecords.py:215","Nombre de Tâches":72,"RDD Info":[{"RDD ID":6,"Nom":"PythonRDD","Parent Id":[0],"mémoire de Stockage":{"Utiliser le Disque":false,"Utilisation de la Mémoire":false,"Utilisation ExternalBlockStore":false,"Désérialisé":false,"Réplication":1},"le Nombre de Partitions":72,"Nombre de mises en Cache Partitions":0,"Taille de la Mémoire":0,"ExternalBlockStore Taille":0,"Taille de Disque":0},{"RDD ID":0,"Name":"gs://uc1f-bioinfocloud-vamp-m/literature/xml/P*/*.nxml","Scope":"{\"id\":\"0\",\"name\":\"wholeTextFiles\"}","Parent Id":[],"mémoire de Stockage":{"Utiliser le Disque":false,"Utilisation de la Mémoire":false,"Utilisation ExternalBlockStore":false,"Désérialisé":false,"Réplication":1},"le Nombre de Partitions":72,"Nombre de mises en Cache Partitions":0,"Taille de la mémoire":0,"ExternalBlockStore Taille":0,"Taille de Disque":0}],"Parent Id":[],"Details":"","Soumission":1437616365566,"l'Achèvement des Temps":1437616397753,"le Motif de l'Échec":"Emploi annulée en raison de la scène de l'échec: la Tâche 6 de la phase 2.0 a échoué 4 fois, plus récent échec: Perdu tâche 6.3 dans le stade 2.0 (TID 12, uc1f-bioinfocloud-vamp-m-2.c.quantum-appareil-854.interne): ExecutorLostFailure (exécuteur 20150526-135628-3255597322-5050-1304-S8 perdu)\nDriver stacktrace:","Accumulables":[]}}
{"Événement":"SparkListenerJobEnd","Job ID":2,"l'Achèvement des Temps":1437616397755, de Travail"Result":{"Résultat":"JobFailed","Exception":{"Message":"Emploi annulée en raison de la scène de l'échec: la Tâche 6 de la phase 2.0 a échoué 4 fois, plus récent échec: Perdu tâche 6.3 dans le stade 2.0 (TID 12, uc1f-bioinfocloud-vamp-m-2.c.quantum-appareil-854.interne): ExecutorLostFailure (exécuteur 20150526-135628-3255597322-5050-1304-S8 perdu)\nDriver stacktrace:","Trace de la Pile":[{"Déclarer la Classe":"org.apache.spark.le planificateur.DAGScheduler","Nom de la Méthode":"org$apache$étincelle$planificateur de$DAGScheduler$$failJobAndIndependentStages","Nom de Fichier":"DAGScheduler.scala","Numéro de Ligne":1266},{"Déclarer la Classe":"org.apache.spark.le planificateur.DAGScheduler$$anonfun$abortStage$1","Nom de la Méthode":"appliquer","Nom de Fichier":"DAGScheduler.scala","Numéro de Ligne":1257},{"Déclarer la Classe":"org.apache.spark.le planificateur.DAGScheduler$$anonfun$abortStage$1","Nom de la Méthode":"appliquer","Nom de Fichier":"DAGScheduler.scala","Numéro de Ligne":1256},{"Déclarer la Classe":"scala.collection.mutable.ResizableArray de classe$","Nom de la Méthode":"foreach","Nom de Fichier":"ResizableArray.scala","Numéro de Ligne":59},{"Déclarer la Classe":"scala.collection.mutable.ArrayBuffer","Nom de la Méthode":"foreach","Nom de Fichier":"ArrayBuffer.scala","Numéro de Ligne":47},{"Déclarer la Classe":"org.apache.spark.le planificateur.DAGScheduler","Nom de la Méthode":"abortStage","Nom de Fichier":"DAGScheduler.scala","Numéro de Ligne":1256},{"Déclarer la Classe":"org.apache.spark.le planificateur.DAGScheduler$$anonfun$handleTaskSetFailed$1","Nom de la Méthode":"appliquer","Nom de Fichier":"DAGScheduler.scala","Numéro de Ligne":730},{"Déclarer la Classe":"org.apache.spark.le planificateur.DAGScheduler$$anonfun$handleTaskSetFailed$1","Nom de la Méthode":"appliquer","Nom de Fichier":"DAGScheduler.scala","Numéro de Ligne":730},{"Déclarer la Classe":"scala.Option","Nom de la Méthode":"foreach","Nom de Fichier":"Option.scala","Numéro de Ligne":236},{"Déclarer la Classe":"org.apache.spark.le planificateur.DAGScheduler","Nom de la Méthode":"handleTaskSetFailed","Nom de Fichier":"DAGScheduler.scala","Numéro de Ligne":730},{"Déclarer la Classe":"org.apache.spark.le planificateur.DAGSchedulerEventProcessLoop","Nom de la Méthode":"onReceive","Nom de Fichier":"DAGScheduler.scala","Numéro de Ligne":1450},{"Déclarer la Classe":"org.apache.spark.le planificateur.DAGSchedulerEventProcessLoop","Nom de la Méthode":"onReceive","Nom de Fichier":"DAGScheduler.scala","Numéro de Ligne":1411},{"Déclarer la Classe":"org.apache.spark.util.EventLoop$$anon$1","Nom de la Méthode":"exécuter en","Nom de Fichier":"EventLoop.scala","Numéro de Ligne":48}]}}}
OriginalL'auteur User17 | 2015-07-21
Vous devez vous connecter pour publier un commentaire.
Cette erreur se produit en raison d'une tâche a échoué plus de quatre fois.
Essayez d'augmenter le parallélisme dans votre cluster en utilisant le paramètre suivant.
Régler le parallélisme de la valeur à 2 à 3 fois le nombre de cœurs disponibles sur votre cluster. Si cela ne fonctionne pas. essayez d'augmenter le parallélisme de façon exponentielle. j'.e si vos parallélisme actuel ne fonctionne pas multiplier par deux et ainsi de suite. J'ai également fait observer qu'il est utile que si votre niveau de parallélisme est un nombre premier, surtout si vous utilisez groupByKkey.
OriginalL'auteur Rishi
Il est difficile de dire quel est le problème sans le journal de l'échec de l'exécuteur testamentaire et non du pilote, mais le plus probable, c'est un problème de mémoire. Essayez d'augmenter le numéro de la partition de manière significative (si votre actuelle est de 32 essayez 200)
Mais j'obtiens le même problème Tâche Perdu 4 fois que ExecutorLostFailure. J'ai parfois le Temps de Connexion. Plus depuis que je suis sur Google Cloud Mesos Cluster, j'ai essayé et regarder pour les journaux comme vous l'avez suggéré et regarda var/log/mesos (Maître et de l'esclave logs sont dans /var/log/mesos par défaut, comme le suggère l'étincelle mesos de la documentation), mais je n'ai pas trouvé de bonnes informations. Il n'existe aucun autre journal que je regarde ou poster ici ?? Avec exécuteur des journaux vouliez-vous dire la même chose?
OriginalL'auteur Arnon Rotem-Gal-Oz
J'ai eu ce problème, et le problème, pour moi, c'était très haute fréquence d'une clé dans un
reduceByKey
tâche. C'était (je pense) provoquant une énorme liste de recueillir sur l'un des exécuteurs testamentaires, qui serait alors de jeter OOM erreurs.La solution pour moi a été de filtrer les clés à forte population avant de faire la
reduceByKey
, mais je comprends que cela peut ou peut ne pas être possible en fonction de votre application. Je n'ai pas besoin de toutes mes données, de toute façon.OriginalL'auteur timchap
La cause la Plus fréquente de ExecutorLostFailure selon ma compréhension est OOM dans exécuteur testamentaire.
Afin de résoudre la question OOM, on a besoin de déterminer exactement quel en est la cause. Il suffit d'augmenter la valeur par défaut de parallélisme ou de l'augmentation de l'exécuteur de la mémoire n'est pas une solution stratégique.
Si vous regardez ce qui augmente le parallélisme n'est-il tente de créer plusieurs exécuteurs de sorte que chaque interprète peut travailler moins et moins de données. Mais si vos données est asymétrique, comme en témoigne la clé sur laquelle le partitionnement des données qui se passe (pour le parallélisme) a plus de données, il suffit d'augmenter le parallélisme ne sera d'aucun effet.
De même juste en augmentant l'Exécuteur de la mémoire sera un moyen inefficace de la remise d'un tel scénario comme si un seul exécuteur testamentaire est un échec avec ExecutorLostFailure , demandant l'augmentation de la mémoire pour tous les exécuteurs testamentaires fera de votre application nécessite beaucoup plus de mémoire alors effectivement prévu.
OriginalL'auteur joshi.n