Apache Spark se distingue de ses pré­dé­ces­seurs (Hadoop) ou de ses con­cur­rents (PySpark) grâce à l’in­croyable rapidité de ses per­for­mances, une ca­rac­té­ris­tique parmi les plus im­por­tantes dans le cadre de l’in­ter­ro­ga­tion, du trai­te­ment et de l’analyse d’im­por­tants volumes de données. En sa qualité de framework big data et d’ana­ly­tique en mémoire, Spark offre de nombreux avantages en matière d’analyse de données, d’ap­pren­tis­sage au­to­ma­tique, de diffusion de données et de langage SQL.

Qu’est-ce qu’Apache Spark ?

Apache Spark, le framework d’analyse de données dé­ve­lop­pée par l’uni­ver­sité de Berkeley, est aujourd’hui con­si­dé­rée comme l’une des pla­te­formes de big data les plus plé­bis­ci­tées au monde. Elle compte parmi les « Top-Level Projects » (projets de niveau supérieur) d’Apache Software Foun­da­tion. Ce moteur ana­ly­tique permet de traiter si­mul­ta­né­ment d’im­por­tants volumes de données et d’ap­pli­ca­tions d’analyse de données dans des clusters in­for­ma­tiques dis­tri­bués. Le framework Spark a été créé pour répondre aux exigences propres au big data en matière de vitesse de calcul, d’ex­ten­si­bi­lité et d’évo­lu­ti­vité.

Elle propose à cette fin des modules intégrés pouvant être utilisés pour le Cloud computing, l’ap­pren­tis­sage au­to­ma­tique, les ap­pli­ca­tions d’in­tel­li­gence ar­ti­fi­cielle (IA) ainsi que les données gra­phiques et de diffusion offrent de nombreux avantages. Puissant et évolutif, ce moteur est même utilisé par d’im­por­tants four­nis­seurs tels que Netflix, Yahoo et eBay.

Quelles sont les par­ti­cu­la­ri­tés d’Apache Spark ?

Le moteur Apache Spark est nettement plus rapide et puissant qu’Apache Hadoop ou qu’Apache Hive. Il est cent fois plus rapide que MapReduce, développé par Hadoop, lorsque le trai­te­ment des commandes s’effectue en mémoire, et dix fois plus rapide que celui-ci lorsqu’il s’effectue sur le disque. Spark propose donc aux en­tre­prises des per­for­mances qui leur per­met­tent de réduire les coûts tout en amé­lio­rant leur ef­fi­ca­cité.

La flexi­bi­lité de Spark reste toutefois son aspect le plus in­té­res­sant. Non seulement il est possible d’exécuter ce moteur de manière autonome, mais vous pouvez également l’intégrer à des clusters Hadoop gérés par YARN. Il permet en outre aux dé­ve­lop­peurs d’écrire des ap­pli­ca­tions Spark dans plusieurs langages de pro­gram­ma­tion. Il peut ici s’agir de SQL, mais aussi de Python, de Scala, de R ou encore de Java.

Spark possède également d’autres par­ti­cu­la­ri­tés : vous ne devez pas l’installer sur le système de fichiers Hadoop, mais il peut très bien être utilisé avec d’autres pla­te­formes de données telles qu’AWS S3, Apache Cassandra ou encore HBase. De plus, si vous indiquez la source des données, il est en mesure de traiter aussi bien les processus batch, comme c’est le cas sous Hadoop, que les données de flux et les dif­fé­rentes charges de travail, le tout avec un code presque identique. Grâce à son processus d’in­ter­ro­ga­tion in­te­rac­tif, vous pouvez ainsi répartir les données en temps réel actuelles et plus anciennes, notamment ana­ly­tiques, sur plusieurs couches du disque dur et de la mémoire, puis les traiter en parallèle.

Comment fonc­tionne Spark ?

Le fonc­tion­ne­ment de Spark est fondé sur le principe hié­rar­chique « primaire-se­con­daire », également connu sous le nom, aujourd’hui obsolète, de principe « maître-esclave ». Le pilote Spark fait donc office de nœud « maître » ad­mi­nis­tré par le ges­tion­naire du cluster. Il contrôle les nœuds « esclaves » et transmet au client les analyses de données. Le point d’entrée Spark­Con­text, créé par le pilote Stark, permet de répartir et de sur­veil­ler les exé­cu­tions et les in­ter­ro­ga­tions ; il fonc­tionne de concert avec des ges­tion­naires de clusters comme Spark, YARN, Hadoop ou encore Ku­ber­netes. Des Resilient Dis­tri­bu­ted Datasets (RDD, lit­té­ra­le­ment « ensembles de données dis­tri­bués ré­si­lients ») sont également créés.

Spark détermine les res­sources à utiliser pour l’in­ter­ro­ga­tion ou le stockage des données, ou encore l’em­pla­ce­ment sur lequel les données in­ter­ro­gées doivent être trans­fé­rées. Le moteur traite les données de façon directe et dynamique dans la mémoire vive des clusters de serveurs, ce qui permet de réduire la latence et d’offrir des per­for­mances ex­trê­me­ment rapides. Les étapes de travail en parallèle et l’uti­li­sa­tion de mémoires vir­tuelles et physiques viennent compléter cette offre.

Apache Spark est également en mesure de traiter les données provenant de dif­fé­rentes mémoires de données, notamment du Hadoop Dis­tri­bu­ted File System (HDFS, lit­té­ra­le­ment « système de fichiers dis­tri­bués ») et des mémoires de données re­la­tion­nelles comme Hive ou les bases de données NoSQL. Il prend également en charge le trai­te­ment en mémoire ou sur disque, en fonction de la taille des ensembles de données concernés, ce qui vous permet d’améliorer vos per­for­mances.

Les RDD : des ensembles de données dis­tri­bués qui résistent aux pannes

Dans Apache Spark, les Resilient Dis­tri­bu­ted Datasets cons­ti­tuent une base im­por­tante pour le trai­te­ment de données, qu’elles soient ou non struc­tu­rées. Spark répartit ces agré­ga­tions de données qui résistent aux pannes sur des clusters de serveurs par clus­te­ring et les traite en parallèle, ou les transfère dans des mémoires de données. Il peut également les trans­mettre à d’autres modèles d’analyse. Dans les RDD, les ensembles de données sont divisés en par­ti­tions logiques que vous pouvez récupérer, recréer ou modifier, mais aussi calculer à l’aide de trans­for­ma­tions et d’actions.

Conseil

Avec l’offre d’hé­ber­ge­ment Linux proposée par IONOS, profitez d’une base de données adaptée à vos besoins, évolutive et flexible, avec un cer­ti­fi­cat SSL et une pro­tec­tion DDoS, ainsi que des serveurs sécurisés situés dans l’Union Eu­ro­péenne.

Da­ta­Frames et DataSets

Spark traite aussi d’autres types de données, appelés « Da­ta­Frames » et « Datasets ». Les Da­ta­Frames sont des API (Ap­pli­ca­tion Pro­gram­ming In­ter­faces, lit­té­ra­le­ment « in­ter­faces de pro­gram­ma­tion d’ap­pli­ca­tions ») qui se pré­sen­tent comme des tables de données struc­tu­rées avec des lignes et des colonnes. Les DataSets cor­res­pon­dent à une extension des Da­ta­Frames pour une interface uti­li­sa­teur orientée objet à des fins de pro­gram­ma­tion. Les Da­ta­Frames jouent un rôle essentiel en tant qu’API à la structure uniforme dans tous les langages de pro­gram­ma­tion, en par­ti­cu­lier dans le cadre de la Machine Learning Library (MLlib) de Spark.

Quels sont les langages utilisés par Spark ?

Spark a été développé avec le langage Scala, qui est également le langage primaire du moteur central de Spark. Spark propose en outre des con­nec­teurs Java et Python. Le langage Python combiné à d’autres langages de pro­gram­ma­tion peut offrir plusieurs avantages en matière d’analyse efficace des données, en par­ti­cu­lier dans les domaines de la science et l’in­gé­nie­rie des données avec Spark. Spark prend aussi en charge les in­ter­faces API de haut niveau pour le langage de pro­gram­ma­tion R, spé­cia­lisé en science des données, qu’il est possible d’appliquer à d’im­por­tants volumes de données et d’utiliser dans le cadre de l’ap­pren­tis­sage au­to­ma­tique.

Quels sont les domaines d’uti­li­sa­tion de Spark ?

La diversité des bi­blio­thèques et des mémoires de données Spark, les API com­pa­tibles avec nombre de langages de pro­gram­ma­tion et l’ef­fi­ca­cité du trai­te­ment en mémoire de Spark lui permet de s’adapter à plusieurs secteurs. Lorsqu’il est question de traiter, d’in­ter­ro­ger ou de calculer d’im­por­tants volumes de données complexes, Spark propose d’ex­cel­lentes per­for­mances grâce à sa vitesse, à son évo­lu­ti­vité et à sa flexi­bi­lité, notamment pour les ap­pli­ca­tions big data des grandes en­tre­prises. Spark est donc tout par­ti­cu­liè­re­ment populaire dans les domaines de la publicité numérique et du commerce élec­tro­nique, dans les en­tre­prises fi­nan­cières, où il est utilisé pour l’analyse de données fi­nan­cières ou la création de modèles d’in­ves­tis­se­ment, ainsi que dans les contextes relevant de la si­mu­la­tion, de l’in­tel­li­gence ar­ti­fi­cielle et de la prévision des tendances.

Vous trouverez ci-dessous une liste des aspects parmi les im­por­tants pour l’uti­li­sa­tion de Spark :

  • Trai­te­ment, in­té­gra­tion et collecte de volumes de données provenant d’un grand nombre de sources et d’ap­pli­ca­tions dif­fé­rentes
  • In­ter­ro­ga­tion et analyse in­te­rac­tives de données big data
  • Éva­lua­tion de la diffusion de données en temps réel
  • Ap­pren­tis­sage au­to­ma­tique et in­tel­li­gence ar­ti­fi­cielle
  • Processus ETL (Extract-Transform-Load, lit­té­ra­le­ment « ex­trac­tion, trans­for­ma­tion et char­ge­ment ») à grande échelle
Conseil

Vous ne souhaitez pas investir dans un service in­for­ma­tique ? Optez plutôt pour des serveurs dédiés avec des pro­ces­seurs Intel ou AMD situés dans l’Union Europénne en louant un serveur Managed chez IONOS.

Com­po­sants et bi­blio­thèques es­sen­tiels de l’ar­chi­tec­ture Spark

Les éléments ci-dessous comptent parmi les plus im­por­tants de l’ar­chi­tec­ture Spark :

Spark Core

Spark Core sert de base à l’ensemble du système Spark. Il lui fournit ses fonctions de base et gère la ré­par­ti­tion des tâches, l’abs­trac­tion des données et la pla­ni­fi­ca­tion des dé­ploie­ments, de même que les processus d’entrée et de sortie. La structure de données de Spark Core se compose de RDD répartis sur plusieurs clusters de serveurs et or­di­na­teurs. Il sert aussi de base à Spark SQL, à des bi­blio­thèques et à Spark Streaming, ainsi qu’à tous les autres com­po­sants in­di­vi­duels prin­ci­paux.

Spark SQL

Cette bi­blio­thèque est tout par­ti­cu­liè­re­ment populaire, et permet d’utiliser les RDD en tant que requêtes SQL. Pour ce faire, Spark SQL génère des tables Da­ta­Frames tem­po­raires. Spark SQL vous permet d’accéder à dif­fé­rentes sources de données, de tra­vail­ler avec des données struc­tu­rées et de faire appel à des requêtes de données en passant par SQL et d’autres API Da­ta­Frames. Spark SQL permet en outre d’intégrer le langage du système de base de données HiveQL de manière à accéder à un entrepôt de données géré par Hive.

Spark Streaming

Il s’agit d’une fonc­tion­na­lité API de haut niveau qui permet d’utiliser des fonctions de diffusion de données hautement évo­lu­tives qui résistent aux pannes, mais aussi de traiter ou d’afficher des flux de données continus en temps réel. Spark génère ensuite des paquets in­di­vi­duels pour les actions sur les données à partir de ces flux. Ainsi, il est également possible d’utiliser des modèles d’ap­pren­tis­sage au­to­ma­tique entraînés dans ces flux de données.

MLlib (Machine Learning Library)

Cette bi­blio­thèque Spark évolutive propose du code en lien avec l’ap­pren­tis­sage au­to­ma­tique pour l’ap­pli­ca­tion de processus sta­tis­tiques avancés dans des clusters de serveurs ou le dé­ve­lop­pe­ment d’ap­pli­ca­tions d’analyse. Elle renferme des al­go­rithmes d’ap­pren­tis­sage courants comme le clus­te­ring, la ré­gres­sion, la clas­si­fi­ca­tion et la re­com­man­da­tion, des services en lien avec le flux de travail, des éva­lua­tions de modèles, des sta­tis­tiques linéaires dis­tri­buées et des trans­for­ma­tions de l’algèbre ou des ca­rac­té­ris­tiques. MLlib permet une mise à l’échelle et une sim­pli­fi­ca­tion efficaces de l’ap­pren­tis­sage au­to­ma­tique.

GraphX

L’API GraphX de Spark permet d’effectuer des calculs de gra­phiques en parallèle et rassemble l’ETL, le trai­te­ment in­te­rac­tif de gra­phiques et les analyses ex­plo­ra­toires.

Image: Schéma de l’architecture Spark
Spark offre de nombreux avantages à votre en­tre­prise en ce qui concerne le trai­te­ment et l’in­ter­ro­ga­tion d’im­por­tants volumes de données.

Quelle est l’histoire de la création d’Apache Spark ?

Apache Spark a été développé en 2009 sur le campus de l’uni­ver­sité de Ca­li­for­nie à Berkeley, au sein de l’AMPlab. Depuis 2010, Spark est proposé au public gra­tui­te­ment, sous licence open source. Depuis 2013, Apache Software Foun­da­tion (ASF) continue à dé­ve­lop­per et à optimiser Spark. Sa po­pu­la­rité et le potentiel de son framework big data ont poussé l’ASF à propulser Stark au rang de « Top-Level Project » (projet de niveau supérieur) en février 2014. Spark 1.0 a été mis à la dis­po­si­tion du public en mai 2014. Aujourd’hui (c’est-à-dire en avril 2023), Spark en est à sa version 3.3.2.

Spark avait pour but d’accélérer les requêtes et les tâches dans les systèmes Hadoop. En se basant sur Spark Core et grâce à des fonctions dis­tri­buées pour la trans­mis­sion de tâches, des fonc­tion­na­li­tés d’entrée et de sortie et des pos­si­bi­li­tés de trai­te­ment en mémoire, il a largement devancé MapReduce, qui re­pré­sen­tait jusqu’alors la norme dans le framework Hadoop.

Quels sont les avantages d’Apache Spark ?

Pour in­ter­ro­ger et traiter ra­pi­de­ment d’im­por­tants volumes de données, Spark propose les avantages suivants :

  • Vitesse : il peut traiter et exécuter les charges de travail jusqu’à cent fois plus ra­pi­de­ment que MapReduce (créé par Hadoop). D’autres avantages en matière de per­for­mance sont en lien avec la prise en charge du trai­te­ment par lots et du trai­te­ment des données de flux, des gra­phiques acy­cliques orientés, d’un moteur d’exécution physique et de solutions d’op­ti­mi­sa­tion des requêtes.
  • Évo­lu­ti­vité : avec le trai­te­ment en mémoire des données réparties sur les dif­fé­rents clusters, Spark vous propose de faire évoluer les res­sources de manière flexible en fonction de vos besoins.
  • Cohérence : Spark agit comme un framework global pour le big data, qui rassemble dif­fé­rentes fonctions et bi­blio­thèques au sein d’une seule ap­pli­ca­tion : requêtes SQL, Da­ta­Frames, Spark Streaming, MLlib (pour l’ap­pren­tis­sage au­to­ma­tique) GraphX (pour le trai­te­ment des gra­phiques), etc., sans oublier l’in­té­gra­tion de HiveQL.
  • Facilité d’uti­li­sa­tion : grâce à des in­ter­faces API con­vi­viales donnant accès à d’in­nom­brables sources de données et à plus de 80 opé­ra­teurs courants pour le dé­ve­lop­pe­ment d’ap­pli­ca­tions, Spark réunit en un seul framework un grand nombre de pos­si­bi­li­tés d’ap­pli­ca­tion. L’uti­li­sa­tion in­te­rac­tive de shells Scala, Python, R ou SQL pour l’écriture de services peut également s’avérer par­ti­cu­liè­re­ment in­té­res­sante.
  • Framework open source : autour de son approche open source, Spark a su réunir une com­mu­nauté in­ter­na­tio­nale et active de spé­cia­listes qui le dé­ve­lop­pent en per­ma­nence, remédient à ses vul­né­ra­bi­li­tés en matière de sécurité et assurent une in­no­va­tion rapide.
  • Op­ti­mi­sa­tion de l’ef­fi­ca­cité et réduction des coûts : Comme Spark n’a pas besoin de struc­tures de serveurs physiques haut de gamme pour fonc­tion­ner, la pla­te­forme d’analyse big data propose des fonc­tion­na­li­tés per­met­tant à la fois de réduire les coûts et d’améliorer les per­for­mances, en par­ti­cu­lier dans le domaine des al­go­rithmes d’ap­pren­tis­sage au­to­ma­tique à forte intensité de calcul et des processus de données complexes en parallèle.

Quels sont les in­con­vé­nients d’Apache Spark ?

S’il présente de nombreux points forts, Spark n’est toutefois pas to­ta­le­ment dénué d’in­con­vé­nients. Spark ne dispose d’aucun moteur de mémoire intégré ; il est donc dépendant de plusieurs com­po­sants dis­tri­bués. En outre, comme le trai­te­ment en mémoire nécessite beaucoup de mémoire vive, vos per­for­mances peuvent être amoin­dries si vous ne disposez pas de suf­fi­sam­ment de res­sources. Vous devrez donner de votre temps pour vous former à l’uti­li­sa­tion de Spark et com­prendre les processus qui sous-tendent la con­fi­gu­ra­tion d’un serveur Web Apache autonome ou d’autres struc­tures de Cloud par l’in­ter­mé­diaire de Spark.

Aller au menu principal