Vue d’ensemble du mode Cluster

Ce document donne un bref aperçu de l’exécution de Spark sur les clusters, afin de faciliter la compréhension des composants impliqués. Lisez le guide de soumission de candidature pour en savoir plus sur le lancement d’applications sur un cluster.

Les applications Spark s’exécutent en tant qu’ensembles de processus indépendants sur un cluster, coordonnés par l’objet SparkContext de votre programme principal (appelé programme pilote).

Plus précisément, pour s’exécuter sur un cluster, SparkContext peut se connecter à plusieurs types de gestionnaires de cluster (soit le gestionnaire de cluster autonome de Spark, Mesos ou YARN), qui allouent des ressources à travers les applications. Une fois connecté, Spark acquiert des exécuteurs sur des nœuds du cluster, qui sontprocessus qui exécutent des calculs et stockent des données pour votre application.Ensuite, il envoie le code de votre application (défini par des fichiers JAR ou Python transmis à SparkContext) aux exécuteurs. Enfin, SparkContext envoie des tâches aux exécuteurs à exécuter.

Il y a plusieurs choses utiles à noter à propos de cette architecture:

  1. Chaque application reçoit ses propres processus d’exécution, qui restent actifs pendant toute la durée de l’application et exécutent des tâches dans plusieurs threads. Cela a l’avantage d’isoler les applications les unes des autres, à la fois du côté de la planification (chaque pilote planifie ses propres tâches) et du côté de l’exécution (les tâches de différentes applications s’exécutent dans différentes JVM). Cependant, cela signifie également que les données ne peuvent pas être partagées entre différentes applications Spark (instances de SparkContext) sans les écrire sur un système de stockage externe.
  2. Spark est indépendant du gestionnaire de cluster sous-jacent. Tant qu’il peut acquérir des processus d’exécution et que ceux-ci communiquent entre eux, il est relativement facile de l’exécuter même sur acluster manager qui prend également en charge d’autres applications (par exemple Mesos / YARN).
  3. Le programme pilote doit écouter et accepter les connexions entrantes de ses exécuteurs tout au long de leur durée de vie (par exemple, voir spark.pilote.port dans la section configsection réseau). En tant que tel, le programme de pilote doit être networkaddressable à partir des nœuds de travail.
  4. Étant donné que le pilote planifie des tâches sur le cluster, il doit être exécuté à proximité des codes de travail, de préférence sur le même réseau local. Si vous souhaitez envoyer des demandes à thecluster à distance, il est préférable d’ouvrir un RPC au pilote et de le faire soumettre des opérations à proximité plutôt que d’exécuter un pilote loin des nœuds de travail.

Types de gestionnaires de cluster

Le système prend actuellement en charge plusieurs gestionnaires de cluster:

  • Autonome – un gestionnaire de cluster simple inclus avec Spark qui facilite la configuration d’un cluster.
  • Apache Mesos – un gestionnaire de cluster général qui peut également exécuter des applications Hadoop MapReduceand service.
  • Hadoop YARN – le gestionnaire de ressources dans Hadoop 2.
  • Kubernetes – un système open source pour automatiser le déploiement, la mise à l’échelle et la gestion d’applications conteneurisées.

Un projet tiers (non pris en charge par le projet Spark) existe pour ajouter le support forNomad en tant que gestionnaire de cluster.

Soumission des demandes

Les demandes peuvent être soumises à un cluster de tout type à l’aide du script spark-submit.Le guide de soumission de demande décrit comment procéder.

Surveillance

Chaque programme de pilote dispose d’une interface utilisateur Web, généralement sur le port 4040, qui affiche des informations sur les tâches d’exécution, les exécuteurs et l’utilisation du stockage. Il suffit d’aller à dans un navigateur Web pouraccéder à cette interface utilisateur. Le guide de surveillance décrit également d’autres options de surveillance.

Planification des tâches

Spark permet de contrôler l’allocation des ressources à la fois entre les applications (au niveau du gestionnaire de clusters) et au sein des applications (si plusieurs calculs sont effectués sur le même SparkContext).L’aperçu de la planification des tâches décrit cela plus en détail.

Glossaire

Le tableau suivant résume les termes utilisés pour désigner les concepts de cluster:

Terme Signification
Application Programme utilisateur construit sur Spark. Se compose d’un programme pilote et d’exécuteurs sur le cluster.
Jar d’application Un jar contenant l’application Spark de l’utilisateur. Dans certains cas, les utilisateurs voudront créer un « pot uber » contenant leur application ainsi que ses dépendances. Le fichier jar de l’utilisateur ne doit jamais inclure de bibliothèques Hadoop ou Spark, cependant, celles-ci seront ajoutées au moment de l’exécution.
Programme pilote Le processus exécutant la fonction main() de l’application et créant le SparkContext
Gestionnaire de cluster Un service externe pour l’acquisition de ressources sur le cluster (par exemple, gestionnaire autonome, Mesos, YARN)
Le mode de déploiement Distingue l’endroit où le processus du pilote s’exécute. En mode « cluster », le framework lance le pilote à l’intérieur du cluster. En mode « client », l’émetteur lance le pilote en dehors du cluster.
Nœud de travail Tout nœud pouvant exécuter du code d’application dans le cluster
Executor Un processus lancé pour une application sur un nœud de travail, qui exécute des tâches et conserve les données en mémoire ou en stockage sur disque. Chaque application a ses propres exécuteurs.
Tâche Une unité de travail qui sera envoyée à un exécuteur testamentaire
Job Un calcul parallèle composé de plusieurs tâches qui est généré en réponse à une action Spark (par exemple save, collect); vous verrez ce terme utilisé dans les journaux du conducteur.
Stage Chaque tâche est divisée en plus petits ensembles de tâches appelées étapes qui dépendent les unes des autres (similaires aux étapes map et reduce dans MapReduce) ; vous verrez ce terme utilisé dans les journaux du pilote.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Previous post Oui, Le Téléchargement De ROM Nintendo Est Illégal (Même si Vous Possédez le Jeu)
Next post surnoms