Apache Spark Question 1: Qu'est-ce que Spark? Apache Spark est un framework ope

Apache Spark Question 1: Qu'est-ce que Spark? Apache Spark est un framework open source principalement utilisé pour l'analyse Big Data, l'apprentissage automatique et le traitement en temps réel. Le framework fournit essentiellement une interface entièrement fonctionnelle pour les programmeurs et les développeurs. Cette interface facilite grandement la programmation en grappes complexes et les tâches d’apprentissage automatique.  Apache Spark est une plateforme de traitement sur cluster générique.  Assure un traitement parallèle et distribué sur des données massives.  Réaliser des traitements par lot (batch Processing) ou à la volée (Stream Processing).  Intégrer tous les outils et technologies Big Data.  Offre le traitement itératif, interactif et à la volée.  Offre des APIs de haut niveau en Java, Scala, Python et R. Question 2: Pourquoi utiliser Spark? ✓ 3 fois plus rapide que Hadoop. ✓ Utilise moins de ressources que Hadoop. ✓ Fonctionne en mémoire. ✓ Possibilité d’utiliser Spark avec hadoop. ✓ Résilient aux pannes. Question 3: Composants de Spark ? Apache Spark utilise une architecture en couches, comportant plusieurs composants, dont l'objectif est de permettre de réaliser des traitements performants tout en promettant un développement et une intégration facilitées. Il est né à la base pour pallier les problèmes posés par Hadoop Map Reduce, mais est devenu une entité à lui seul, offrant bien plus que le traitement par lot classique. 1. Spark Core est le point central de Spark, qui fournit une plateforme d'exécution pour toutes les applications Spark. De plus, il supporte un large éventail d'applications. 2. Spark SQL se situe au-dessus de Spark, pour permettre aux utilisateurs d'utiliser des requêtes SQL. Les données structurées et semi-structurées peuvent ainsi être traitées grâce à Spark SQL, avec une performance améliorée. 3. Spark Streaming permet de créer des applications d'analyse de données interactives. Les flux de données sont transformés en micro-lots et traités par- dessus Spark Core. 4.Spark Mllib ,la bibliothèque de machine learning MLlib fournit des algorithmes de haute qualité pour l'apprentissage automatique. Ce sont des librairies riches, très utiles pour les data scientistes, autorisant de plus des traitements en mémoire améliorant la performance de ces algorithmes sur des données massives. 5. Spark Graphx est le moteur d'exécution permettant un traitement scalable utilisant les graphes, se basant sur Spark Core. Question 4: Architecture de Spark ? Les applications Spark s'exécutent comme un ensemble indépendant de processus sur un cluster, coordonnés par un objet SparkContext dans le programme principal, appelé driver program. Pour s'exécuter sur un cluster, SparkContext peut se connecter à plusieurs types de gestionnaires de clusters (Cluster Managers): • Sur le gestionnaire autonome de Spark, qui est inclus dans Spark, et qui présente le moyen le plus rapide et simple de mettre en place un cluster. • Sur Apache Mesos, un gestionnaire de cluster général qui peut aussi tourner sur Hadoop Map Reduce. • Sur Hadoop YARN, le gestionnaire de ressources de Hadoop 2. • Sur Kubernetes, un système open-source pour l'automatisation du déploiement et la gestion des applications. Ces gestionnaires permettent d'allouer les ressources nécessaires pour l'exécution de plusieurs applications Spark. Une fois connecté, Spark lance des exécuteurs sur les noeuds du cluster, qui sont des processus qui lancent des traitements et stockent des données pour les applications. Il envoie ensuite le code de l'application (dans un fichier JAR ou Python) aux exécuteurs. Spark Context envoie finalement les tâches à exécuter aux exécuteurs. Il est à noter que : Chaque application a son lot d'exécuteurs, qui restent actifs tout au long de l'exécution de l'application, ainsi, elles sont isolées les unes des autres, du point de vue de l'orchestration (chaque driver exécute ses propres tâches), et des exécuteurs (les tâches des différentes applications tournent sur des JVM différentes). Ceci implique également que les applications (ou Jobs) Sparks ne peuvent pas échanger des données, sans les enregistrer sur un support de stockage externe. Spark est indépendant du gestionnaire de cluster sous-jacent. Il suffit de configurer Spark pour utiliser ce gestionnaire, il peut gérer ses ressources en même temps que d'autres applications, même non-Spark. L'application principale (driver) doit être à l'écoute des connexions entrantes venant de ses exécuteurs. Question 5: Quelles sont les caractéristiques de Spark? • Performance de traitement Il est possible de réaliser une vitesse de traitement très élevée avec Spark sur des fichiers volumineux qui peut être jusqu'à 100x meilleur que Hadoop Map Reduce, par exemple, et ceci grâce à des mécanismes tel que la réduction du nombre de lectures écritures sur le disque, la valorisation du traitement en mémoire et l'utilisation des mémoires cache et RAM pour les données intermédiaires. • Dynamicité Il est facile de développer des applications parallèles, grâce aux opérateurs haut niveau fournis par Spark (allant jusqu'à 80 opérateurs). • Tolérance aux Fautes Apache Spark fournit un mécanisme de tolérance aux fautes grâce aux RDD. Ces structures en mémoire sont conçues pour récupérer les données en cas de panne. • Traitements à la volée L'un des avantages de Spark par rapport à Hadoop Map Reduce, c'est qu'il permet de traiter les données à la volée, pas uniquement en batch. • Évaluations Paresseuses (Lazy Evaluations) Toutes les transformations faites sur Spark RDD sont paresseuses de nature, ce qui veut dire qu'elles ne donnent pas de résultat direct après leur exécution, mais génèrent un nouvel RDD à partir de l'ancien. On n'exécute effectivement les transformations qu'au moment de lancer une action sur les données. • Support de plusieurs langages Plusieurs langages de programmation sont supportés par Spark, tel que Java, R, Scala et Python. • Une communauté active et en expansion Des développeurs de plus de 50 entreprises sont impliqués dans le développement et l'amélioration de Spark. Ce projet a été initié en 2009 et est encore en expansion. • Support d'analyses sophistiquées Spark est fourni avec un ensemble d'outils dédiés pour le streaming, les requêtes interactives, le machine learning, etc • Intégration avec Hadoop Spark peut s'exécuter indépendamment ou sur Hadoop YARN, et profiter ainsi de la puissance du système de fichiers distribué Hadoop HDFS. Spark RDD et Traitement par Lots Question 6: Spark RDD et Traitement par Lots? Spark gravite autour du concept de " Resilient Distributed Dataset " ou RDD, qui est une collection d'éléments tolérante aux fautes qui peut être gérée en parallèle. Les RDDs utilisent la mémoire et l'espace disque selon les besoins. • R pour Résilient: capable de récupérer rapidement en cas de problèmes ou de conditions difficiles, • D pour Distribué: partage les données sur les différents nœuds participants pour une exécution parallèle, • D pour Dataset: une collection de données composée d'éléments séparés mais qui sont manipulés comme une unité compacte. Il existe deux moyens de créer les RDDs : • Paralléliser une collection existante en mémoire dans le programme Driver. • Le générer à partir d'un fichier enregistré sur un support de stockage externe. Question 7: Quelles sont les caractéristiques des RDDs ?  Immutabilité et Lignée Les RDDs dans Spark sont des collections immuables, c'est à dire qu’elles ne sont jamais modifiées : toute transformation va créer un nouvel RDD au lieu de modifier le RDD initial. Quand un nouvel RDD a été créé à partir d'un RDD existant, ce nouvel RDD contient un pointeur vers le RDD parent. De même, toutes les dépendances entre les RDDs sont loggées dans un graphe, plutôt que directement sur les données. Ce graphe s'appelle Graphe de Lignée ou Lineage Graph.  Lazy Evaluation Toutes les transformations dans Spark sont lazy (fainéantes), car elles ne calculent pas le résultat immédiatement. Elles se souviennent des transformations appliquées à un dataset de base (par ex. un fichier). Les transformations ne sont calculées que quand une action nécessite qu'un résultat soit retourné au programme principal. Cela permet à Spark de s'exécuter plus efficacement. Question 8: Comment créer des RDDs?  En parallélisant des collections existantes : Les collections parallélisées sont créées en appelant la méthode parallelize du JavaSparkContext sur une collection existante dans votre programme Driver. Les éléments de la collection sont copiés pour former une structure distribuée qui peut être traitée en parallèle.  À partir de fichiers enregistrés dans un support de stockage : Spark peut créer une collection distribuée à partir de n'importe quelle source de stockage supportée par Hadoop, incluant votre propre système de stockage, HDFS, Cassandra, HBase, Amazon S3, etc  À partir d’un autre RDD : Grace aux transformations. Question 8: Quelles sont les opérations sur les RDDs? Les RDDs supportent deux types d'opérations: • les transformations, qui permettent de créer une nouvelle collection à partir d'un RDD existant • les actions, qui retournent une valeur au programme driver après avoir exécuté un calcul sur le RDD. Spark SQL Question 9: Qu'est-ce que Spark SQL ? Spark SQL est un module de Spark pour le traitement des données structurées. Contrairement aux RDD, les interfaces fournies par Spark SQL informent Spark de la structure des données et traitements réalisés. En interne, Spark SQL utilise ces informations pour réaliser des optimisations. Il est possible d'interagir avec Spark SQL de deux façons : en utilisant uploads/Management/ apache-spark.pdf

  • 36
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Mar 21, 2022
  • Catégorie Management
  • Langue French
  • Taille du fichier 0.7428MB