2016-11-29 1 views
1

J'ai exécuté une application Spark et l'une des étapes a échoué avec une exception FetchFailedException. À peu près au même moment, un journal semblable à celui-ci est apparu dans les journaux du gestionnaire de ressources. Mon application utilisait plus que du fil alloué mais il avait fonctionné pendant plusieurs jours. Je m'attends à ce que d'autres applications démarrent et souhaitent utiliser le cluster et le gestionnaire de ressources a tué l'un de mes conteneurs pour donner les ressources aux autres.Quand le gestionnaire de ressources a-t-il pu signaler le succès de l'opération "AM Release Container"?

Quelqu'un peut-il me aider à vérifier mon hypothèse et/ou moi de la documentation décrivant les messages du journal que les sorties de Resource Manager?

Edit: Si elle aide la version de fil, je suis en cours d'exécution est 2.6.0-cdh5.4.9

Répondre

0

Le message INFO à propos OPERATION=AM Released Container est de org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FSAppAttempt. Ma vague compréhension du code m'indique que cela était dû au succès de la libération du conteneur, ce qui signifie que le conteneur de l'ApplicationMaster de votre application Spark s'est terminé avec succès.

Je viens répondu à une question similaire Why Spark application on YARN fails with FetchFailedException due to Connection refused? (le vôtre était presque un double).

Une exception FetchFailedException est levée lorsqu'une tâche de réduction (pour une fonction ShuffleDependency) ne peut pas extraire les blocs de shuffle.

La racine cause du FetchFailedException est généralement parce que l'exécuteur testamentaire (avec le GestionnaireBlocs pour les blocs de lecture aléatoire) est perdue (c.-à-plus disponible) en raison de:

  1. OutOfMemoryError pourrait être jeté (alias OOMed) ou une autre exception non gérée.
  2. Le gestionnaire de cluster qui gère les travailleurs avec les exécuteurs de votre application Spark, par exemple YARN, applique les limites de mémoire du conteneur et a finalement décidé de tuer l'exécuteur en raison d'une utilisation excessive de la mémoire.

Vous devez consulter les journaux de l'application Spark en utilisant l'interface utilisateur Web, Spark Historique du serveur ou des outils spécifiques au cluster comme yarn logs -applicationId pour Hadoop (qui est YARN votre cas).

Une solution est généralement de régler la mémoire de votre application Spark.