Vue d'ensemble
- En savoir plus sur l'architecture Spark
- Connaître les différents modes d'exécution
introduction
Apache SparkApache Spark est un moteur de traitement de données open source qui permet l'analyse de grands volumes d'informations de manière rapide et efficace. Sa conception est basée sur la mémoire, ce qui optimise les performances par rapport à d'autres outils de traitement par lots. Spark est largement utilisé dans les applications de big data, apprentissage automatique et analyse en temps réel, grâce à sa facilité d'utilisation et.... C'est un moteur informatique unifié et un ensemble de bibliothèques pour le traitement des données en parallèle sur des clusters d'ordinateurs. C'est le moteur open source le plus développé pour cette tâche, ce qui en fait un outil standard pour tout développeur ou data scientist intéressé par le big data.
Spark prend en charge plusieurs langages de programmation largement utilisés (Python, Java, Échelle y R), inclut des bibliothèques pour diverses tâches allant de SQL au streaming en passant par l'apprentissage automatique, et Spark fonctionne n'importe où, depuis un ordinateur portable jusqu'à un grappeUn cluster est un ensemble d’entreprises et d’organisations interconnectées qui opèrent dans le même secteur ou la même zone géographique, et qui collaborent pour améliorer leur compétitivité. Ces regroupements permettent le partage des ressources, Connaissances et technologies, favoriser l’innovation et la croissance économique. Les grappes peuvent couvrir une variété d’industries, De la technologie à l’agriculture, et sont fondamentaux pour le développement régional et la création d’emplois.... des centaines de serveurs. Cela en fait un système facile à démarrer et à étendre au traitement de données volumineuses ou à une échelle incroyablement grande..

Plus que 500 collaborateurs de 200 institutions responsables du code et une base d'utilisateurs de plus de 225,000 membres, Apache Spark est devenu le framework de Big Data le plus courant et le plus demandé dans toutes les grandes industries. Les entreprises de commerce électronique comme Alibaba, des sociétés de médias sociaux comme Tencent et le moteur de recherche chinois Baidu exécutent des opérations Apache Spark à grande échelle.
Cet article est une ressource unique qui fournit une vue d'ensemble de l'architecture Spark à l'aide d'un diagramme d'architecture Spark..
Table des matières
- L'architecture d'une application Spark
- Le pilote de Spark
- Les exécuteurs d'étincelles
- L'administrateur de cluster
- Types de gestionnaire de cluster
- Modes d'exécution
- Mode cluster
- Manière du client
- mode local
L'architecture d'une application Spark
Vous trouverez ci-dessous les composants de haut niveau de l'architecture d'application Apache Spark:
Le pilote de Spark
Le pilote est la procédure « dans le siège du conducteur » depuis votre application Spark. Il est le contrôleur de l'exécution d'une application Spark et maintient tous les états du cluster Spark (le statut et les tâches des exécuteurs testamentaires). Vous devez interagir avec l'administrateur du cluster pour obtenir des ressources physiques et exécuter des exécuteurs.
A la fin de la journee, il s'agit simplement d'une procédure sur une machine physique chargée de maintenir l'état de l'application en cours d'exécution sur le cluster.
Les exécuteurs d'étincelles
Les exécuteurs Spark sont les processus qui effectuent les tâches assignées par le contrôleur Spark. Les exécuteurs ont une responsabilité fondamentale: assumer les tâches assignées par le chauffeur, les exécuter et rendre compte de leur état (succès ou échec) et résultats. Chaque application Spark a ses propres processus d'exécution indépendants.
L'administrateur du cluster
Spark Driver et Executors n'existent pas dans le vide, et c'est là qu'intervient le gestionnaire de cluster. L'administrateur de cluster est responsable de la maintenance d'un cluster de machines qui exécutera vos applications Spark. D'une manière un peu confuse, un administrateur de cluster aura ses propres abstractions de « manette » (parfois appelé professeur) Oui « ouvrier ».
La principale différence est qu'ils sont liés à des machines physiques plutôt qu'à des processus (comme ils sont dans Spark). La machine à gauche de l'illustration est le nœudNodo est une plateforme digitale qui facilite la mise en relation entre les professionnels et les entreprises à la recherche de talents. Grâce à un système intuitif, Permet aux utilisateurs de créer des profils, Partager des expériences et accéder à des opportunités d’emploi. L’accent mis sur la collaboration et le réseautage fait de Nodo un outil précieux pour ceux qui souhaitent élargir leur réseau professionnel et trouver des projets qui correspondent à leurs compétences et à leurs objectifs.... du contrôleur de Cluster Manager. Les cercles représentent les processus démons qui sont exécutés et gérés par chacun des nœuds de travail individuels. Aucune application Spark n'est encore en cours d'exécution; ce ne sont que les processus du gestionnaire de cluster.
Quand il est temps d'exécuter une application Spark, Nous demandons des ressources à l'administrateur du cluster pour l'exécuter. Selon la configuration de notre application, cela peut inclure un endroit pour exécuter le contrôleur Spark ou il peut s'agir simplement de ressources pour les exécuteurs de notre application Spark. Tout au long de l'exécution de l'application Spark, l'administrateur du cluster sera responsable de la gestion des machines sous-jacentes sur lesquelles notre application s'exécute.

Il y a plusieurs choses utiles à faire attention à propos de cette architecture:
- Chaque application a ses propres processus d'exécution, qui restent actifs dans toute l'application et exécutent des tâches multithread. Cela a l'avantage d'isoler les applications les unes des autres., tant du côté de la programmation (chaque contrôleur planifie ses propres tâches) en tant qu'exécuteur (différentes tâches d'application s'exécutent sur différentes JVM).
Malgré cela, 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. - Spark est indépendant de l'administrateur de cluster sous-jacent. Tant que vous pouvez exécuter des processus et qu'ils communiquent entre eux, il est relativement facile à exécuter même dans un administrateur de cluster qui prend également en charge d'autres applications (par exemple, Mois / FILYARN est un gestionnaire de paquets pour JavaScript qui permet l'installation et la gestion efficace des dépendances dans les projets de développement. Développé par Facebook, Il se caractérise par sa rapidité et sa sécurité par rapport à d'autres gestionnaires. YARN utilise un système de cache pour optimiser les installations et fournit un fichier de verrouillage pour garantir la cohérence des versions des dépendances dans différents environnements de développement....).
- Le programme contrôleur doit écouter et accepter les connexions entrantes de ses exécuteurs tout au long de sa vie (par exemple, regarder spark.driver.port dans la section des paramètres réseau). En tant que tel, le programme du contrôleur doit être adressable par le réseau à partir des nœuds de travail.
- Parce que le contrôleur planifie les tâches sur le cluster, doit s'exécuter à proximité des nœuds de travail, de préférence sur le même réseau local. Si vous souhaitez envoyer des requêtes au cluster à distance, il est préférable d'ouvrir un RPC au contrôleur et de lui faire envoyer des opérations à proximité plutôt que d'exécuter un contrôleur loin des nœuds de travail.
Types d'administrateurs de cluster
En ce moment, le système prend en charge plusieurs administrateurs de cluster:
- Soyez unique – 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 Hadoop CarteRéduireMapReduce est un modèle de programmation conçu pour traiter et générer efficacement de grands ensembles de données. Propulsé par Google, Cette approche décompose le travail en tâches plus petites, qui sont répartis entre plusieurs nœuds d’un cluster. Chaque nœud traite sa partie, puis les résultats sont combinés. Cette méthode vous permet de faire évoluer les applications et de gérer d’énormes volumes d’informations, fondamental dans le monde du Big Data.... et des applications de service.
- Hadoop HILO – le gestionnaire de ressources dans Hadoop 2.
- Gouverneurs – un système open source pour automatiser le déploiement, mise à l'échelle et gestion des applications conteneurisées.
Il y a un projet tiers (non pris en charge par le projet Spark) pour ajouter la prise en charge de Nomade en tant qu'administrateur de cluster.
Modes d'exécution
Un mode d'exécution vous donne le pouvoir de déterminer où se trouvent physiquement les ressources susmentionnées lorsque vous exécutez votre application. Vous avez trois modes à sélectionner:
- Mode cluster
- Manière du client
- mode local
Mode cluster
Le mode cluster est probablement le moyen le plus courant d'exécuter des applications Spark. En mode cluster, un utilisateur soumet un JAR, un script Python ou un script R précompilé à un administrateur de cluster. Après, l'administrateur du cluster lance la procédure du contrôleur sur un nœud de travail au sein du cluster, en même temps que les processus d'exécution. Cela signifie que l'administrateur de cluster est responsable de la maintenance de tous les processus liés à l'application Spark..
Manière du client
Le mode client est presque le même que le mode cluster, sauf que le pilote Spark reste sur la machine cliente qui a envoyé la requête. Cela signifie que la machine cliente est responsable de la maintenance de la procédure du contrôleur Spark et que l'administrateur du cluster gère les processus d'exécution.. Ces machines sont communément appelées machines à portes de liaison ou nœuds de périphérie..
mode local
Le mode local est un écart important par rapport aux deux modes précédents: exécuter l'intégralité de l'application Spark sur une seule machine. Réalisez le parallélisme au moyen de threads sur cette seule machine. C'est une façon courante d'apprendre Spark, tester vos applications ou expérimenter itérativement le développement local.
Malgré cela, nous ne suggérons pas d'utiliser le mode local pour exécuter des applications de production.
conclusion
En résumé, Spark nous aide à décomposer les tâches lourdes et gourmandes en calculs en tâches plus petites et plus concises qui sont ensuite exécutées par les nœuds de travail.. Il réalise également un traitement des données en temps réel ou archivées grâce à son architecture de base..
Je vous recommande de consulter les ressources d'ingénierie de données suivantes pour améliorer vos connaissances:
j'espère que vous avez aimé le post. Si vous avez des questions concernant ce post, Laissez-moi savoir dans la section commentaire ci-dessous.



