Résoudre les problèmes de dépendance dans Apache Spark
Apache Spark construit dynamiquement son chemin de classe, augmentant sa susceptibilité aux problèmes de dépendance tels que java.lang.ClassNotFoundException , l'objet x n'est pas membre du package y, et java.lang.NoSuchMethodError.
La clé pour résoudre ces problèmes réside dans la compréhension des différents composants d'une application Spark :
-
Pilote : Exécute la logique de l'application et gère la connexion au cluster.
-
Gestionnaire de cluster : Alloue les ressources (exécuteurs) pour les applications.
-
Exécuteurs : Effectuez des tâches de traitement réelles.
Chaque composant nécessite des classes spécifiques, comme illustré par le schéma suivant :
[Image du diagramme de présentation du placement en classe]
Spark Code :
- Doit être présent dans tous les composants pour faciliter la communication.
- Utilisez les mêmes versions Scala et Spark dans tous les composants.
Code réservé au pilote :
- Facultatif, contient des éléments non distribués code.
Code distribué :
- Doit être expédié aux exécuteurs testamentaires pour traitement.
- Comprend les transformations utilisateur et leurs dépendances.
Directives concernant la dépendance Résolution :
-
Code Spark :
- Utilisez des versions Spark et Scala cohérentes dans tous les composants.
- Pour le mode autonome, les pilotes doivent correspondre à la version Spark sur le maître et les exécuteurs.
- Pour YARN/Mesos, fournissez la version correcte de Spark lors du démarrage de SparkSession. Expédiez toutes les dépendances Spark aux exécuteurs testamentaires.
-
Code du pilote :
- Package sous forme de pot unique ou multiple, garantissant l'inclusion de toutes les dépendances Spark et de l'utilisateur code.
-
Code distribué :
- Package sous forme de bibliothèque, comprenant le code utilisateur et les dépendances.
- Envoyez la bibliothèque aux exécuteurs testamentaires à l'aide de spark.jars paramètre.
Bonnes pratiques :
- Créez des bibliothèques avec du code distribué, en les conditionnant sous forme de pots normaux et gras.
- Créez des applications de pilotes avec des dépendances sur ces bibliothèques et Spark (version spécifique).
- Package d'applications de pilotes sous forme de gros pots.
- Définissez spark.jars à l'emplacement du code distribué.
- Définissez spark.yarn.archive à l'emplacement des binaires Spark.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn