Architecture d'étincelle | Architecture Apache Spark pour les ingénieurs de données

Contenu

Vue d'ensemble

  • En savoir plus sur l'architecture Spark
  • Connaître les différents modes d'exécution

introduction

Apache Spark 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 grappe 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..

architecture d'étincelle

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œud 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.

architecture d'étincelle - Administrateur de cluster

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

  1. 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.
  2. 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 / FIL).
  3. 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.
  4. 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éduire 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:

  1. Mode cluster
  2. Manière du client
  3. 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.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.

Haut-parleur de données