L'essentiel d'Apache Spark

Aborder l'architecture d'Apache Spark

Testez gratuitement nos 1325 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Apache Spark est un outil généraliste de Big Data. Découvrez son architecture et ses modules, notamment Spark Code et d'autres modules de traitement des données.
07:52

Transcription

Pourquoi utiliser Spark plutôt que Hadoop par exemple ? Quels sont les avantages de Spark par rapport aux traitements distribués type MapReduce ? Donc Apache Spark est plus récent que Hadoop. C'est quelque chose qui a été bâti après plusieurs années d'expérience dans le traitement Big Data à partir d'Hadoop. Les avantages sont qu'on peut dans une même distribution, c'est-à-dire Spark, utiliser plusieurs types de traitements. On n'est pas limité à du MapReduce. Et au lieu d'avoir à intégrer différents types de traitements qui viendraient de développeurs ou d'éditeurs de logiciels différents, et à les faire coexister, on a dans Spark, les types de traitements intégrés dont nous avons besoin. On a du traitement à partir de requêtes SQL pour, générer des interrogations sur les données relativement riches. On peut faire du traitement de Graph, on peut faire du Machine Learning, on peut faire du traitement de flux. On a à disposition des API, ou des interfaces en différents langages, notamment Python, Scala qui est une surcouche de Java si vous voulez, c'est un langage spécifique qui est basé sur Java. Java même, et puis également le langage R que je n'ai pas spécifié ici. Toutes ces API de langage sont disponibles directement dans Spark. Un avantage de Spark par rapport à Hadoop, c'est sa capacité de sérialiser les données en mémoire. En d'autres termes, si j'ai plusieurs traitements à faire sur les mêmes données, Hadoop va à chaque fois les recharger à partir du disque, alors que Spark est capable de les maintenir en mémoire, et donc d'y ré-accéder beaucoup beaucoup plus rapidement. Donc quand je parle de mémoire, c'est bien entendu sur chaque nœud de notre cluster, on aura partitionné nos données pour Spark, et Spark sera capable de stocker ces informations en mémoire de façon à pouvoir, sur chaque machine, chaque processus de traitement, ré-appeler les données en mémoire. Spark, est un outil complet, et complexe. Il comporte un certain nombre de couches. D'abord Spark Core, au milieu, et puis en dessus ici, je vous ai dessiné les couches de traitement, les différents algorithmes ou les différentes interfaces si vous préférez. Et puis en dessous, les gestionnaires de Cluster qu'il est capable d'adresser, avec lesquels il peut se connecter. Je vais revenir sur les différents éléments. On a parlé du gestionnaire de Cluster qu'on voit ici en dessous. Simplement Spark a un gestionnaire de Cluster interne qui s'appelle le Spark Scheduler que vous pouvez utiliser si vous voulez créer un nouveau Cluster Spark. Mais si vous voulez vous baser sur un Cluster Hadoop existant, ou Mesos existant, eh bien Spark bien entendu peut l'utiliser comme gestionnaire de Cluster. Un des avantages de se connecter avec Spark sur Hadoop Yarn par exemple, c'est que Hadoop se connecte à HDFS, il permet donc de co-localiser les données avec le traitement, ce dont je vous ai parlé. Mais donc revenons sur chaque point. Spark Core, c'est, comme son nom l'indique, le moteur de base de Spark qui va contenir des traitements globaux comme le Gestionnaire des tâches, pour lancer des tâches et ensuite les envoyer au gestionnaire de Cluster, gestion de la mémoire également, comment placer les éléments en mémoire. La récupération d'erreurs, traiter les erreurs de traitement qui viennent des différentes machines. L'interaction avec le stockage, les différentes API qui permettent de lire des fichiers texte ou des fichiers Parquet ou du sequenceFile, et puis la définition des classes. On va parler de classes de RDD, Resilient Distributed Dataset, je vais vous en reparler. C'est quelque chose qui évolue petit à petit dans Spark, le modèle de données qu'on va manipuler en fait dans nos applications Spark. Au niveau de la couche d'interrogation des données, nous avons Spark SQL, plus anciennement Shark, qui est maintenant abandonné pour un module qui s'appelle SparkSQL, et comme son nom l'indique, eh bien c'est un moteur d'exécution SQL qui supporte la syntaxe de Hive, qui est aussi un moteur d'exécution SQL traditionnel dans Hadoop. Et on peut charger dans SparkSQL des données qui viennent de différentes sources, ça peut être des tables Hive, ça peut être du format Parquet, ça peut être du JSON, JavaScript Object Notation, c'est-à-dire des documents structurés. Ça peut être des fichiers de type Avro, en utilisant un connecteur externe qui s'appelle Spark Avro, et en fait, il suffit de créer des classes en Java ou en Scala de connecteurs différents pour pouvoir lire les formats que vous voulez avec SparkSQL. Et comme je vous le disais, Shark est déprécié, vous ne l'utilisez plus aujourd'hui, mais on utilise un module qui s'appelle SparkSQL. Vous avez vu aussi Spark Streaming. On est sur un gestionnaire de flux, on va donc traiter des flux de données à l'aide d'une API qu'on peut appeler, en créant son programme, pour développer des applications de traitement de flux. Lorsqu'on utilise l'API Spark Streaming, on va pouvoir développer des traitements personnalisés, mais bénéficier de la gestion des flux à travers Spark. On va utiliser des abstractions qui s'appellent les Dstream, ou discretized stream, qui sont en fait des séquences de RDD. Des Dataset qui vont être des séquences qui vont passer sous forme de flux. Une utilisation classique de Spark Streaming, c'est de connecter un gestionnaire de messages ou un gestionnaire de flux de type Apache Kafka, qui est un outil très utilisé de nos jours pour traiter des envois ou des arrivées de flux, et ensuite utiliser des applications qui se connectent aux API de Spark Streaming pour renvoyer des informations qui vont être stockées soit en HDFS soit dans des bases de données comme Cassandra. Mlib, comme son nom l'indique, Machine Learing, bibliothèque de Machine Learning, ce sont donc des algorithmes de Machine Learning de type classification, régression, clustering, filtrage collaboratif, donc des algorithmes statistiques classiques, historiquement de data mining maintenant de Machine Learning et avec une API qui, maintenant, est en voie de dépréciation sur le RDD, on va utiliser des DataFrame. Alors ne vous inquiétez pas, on va parler des DataFrame bien sûr, on va beaucoup les utiliser, mais on va traiter en Machine Learning maintenant plutôt des DataFrame comme on le fait en SparkSQL. On verra ça, ne vous inquiétez pas. Et le Machine Learning ajoute des abstractions de type Modèle, on va faire des modèles de Machine Learning, on va bâtir des Pipelines pour travailler sur différents algorithmes. Donc c'est un module qui est très riche et très souple, et on va persister nos algorithmes de Machine Learning de façon à pouvoir les réutiliser. Et enfin, dernier module, GraphX, qui comme son nom l'indique, est un moteur de gestion de Graphs distribués. Ça veut dire qu'on va pouvoir étendre nos abstractions de données, nos RDD, vers des Graphs, c'est-à-dire des structures qui sont composées de nœuds et d'arêtes si vous voulez des objets, et puis des liens dirigés entre ces objets. Ce qu'on appelle un multi-Graph dirigé en un certain nombre de nœuds. On a des liens entre chaque nœud dirigés avec des informations placées sur chaque nœud et sur chaque lien, et GraphX est en fait une variante d'une API qui a été documentée par Google, encore une fois dans un papier qui s'appelle Pregel. Google a publié un papier en disant, eh bien nous on fait, par exemple pour analyser nos liens, on utilise un algorithme de traitement de Graph distribués qu'on a appelé Pregel, et donc GraphX s'est inspiré de Pregel et l'a enrichi de façon à avoir quelque chose de puissant au niveau du traitement des Graphs.

L'essentiel d'Apache Spark

Analysez des données volumineuses avec Apache Spark. Chargez vos données pour les analyser, profitez des opérations de transformation et des actions pour agréger vos données, etc.

3h11 (38 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :16 mars 2017

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !