Apache Spark

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Ce modèle est-il pertinent ? Cliquez pour en voir d'autres.
Cet article ne cite pas suffisamment ses sources (novembre 2016).

Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites web de qualité traitant du thème abordé ici, merci de compléter l'article en donnant les références utiles à sa vérifiabilité et en les liant à la section « Notes et références » (modifier l'article, comment ajouter mes sources ?).

Ce modèle est-il pertinent ? Cliquez pour en voir d'autres.
L'article doit être débarrassé d'une partie de son jargon (novembre 2016).

Sa qualité peut être largement améliorée en utilisant un vocabulaire plus directement compréhensible. Discutez des points à améliorer en page de discussion.

Apache Spark
Logo

Fondateur Matei Zaharia (en)Voir et modifier les données sur Wikidata
Développeur Apache Software FoundationVoir et modifier les données sur Wikidata
Première version 30 mai 2014
Dernière version V2.0.1 ()Voir et modifier les données sur Wikidata
Écrit en Scala, Java, Python et RVoir et modifier les données sur Wikidata
Environnement Microsoft Windows, Linux et MacOSVoir et modifier les données sur Wikidata
Type Framework
Apprentissage automatique
Structure logicielle d'apprentissage automatique (d)
Cloud computingVoir et modifier les données sur Wikidata
Licence Apache-2.0 (d)Voir et modifier les données sur Wikidata
Site web Site officielVoir et modifier les données sur Wikidata

Spark (ou Apache Spark[1]) est un framework open source de calcul distribué. Il s'agit d'un ensemble d'outils et de composants logiciels structurés selon une architecture définie. Développé à l'université de Californie à Berkeley par AMPLab[2], Spark est aujourd'hui un projet de la fondation Apache. Ce produit est un cadre applicatif de traitements BigData pour effectuer des analyses complexes à grande échelle.

Historique[modifier | modifier le code]

En 2009, Spark fut conçu par Matei Zaharia[3] lors de son doctorat au sein de l'université de Californie à Berkeley. À l'origine son développement est une solution pour accélérer le traitement des systèmes Hadoop. Les développeurs mettent notamment en avant la rapidité du produit en termes d'exécution des tâches par rapport à MapReduce[4].

En 2013, transmis à la fondation Apache, Spark devient l'un des projets[5] les plus actifs de cette dernière.

En 2014, Spark a gagné le Daytona GraySort Contest[6] dont l'objectif est de trier 100 To de données le plus rapidement possible. Ce record était préalablement détenu par Hadoop. Pour ce faire, Spark a utilisé 206 machines obtenant un temps d'exécution final de 23 minutes alors que Hadoop avait lui utilisé 2100 machines pour un temps d'exécution final de 72 minutes. La puissance de Spark fut démontrée en étant 3 fois plus rapide et en utilisant approximativement 10 fois moins de machines.

Les contributeurs qui participent à son développement sont nombreux et issus d'environ 200 sociétés différentes (exemples : Intel / Facebook / IBM / Netflix)[7]. Ainsi depuis 2015 on recense plus de 1000 contributeurs[8].

Depuis le 3 octobre 2016, Spark Apache 2.0.1. est la dernière version disponible[9].

Utilisation[modifier | modifier le code]

Spark réalise une lecture des données au niveau du Cluster (grappe de serveurs sur un réseau), effectue toutes les opérations d'analyse nécessaires, puis écrit les résultats à ce même niveau. Malgré le fait qu'il s'écrit avec les langages Scala, Java et Python, il utilise au mieux ses capacités avec son langage natif, Scala[10].

De ce fait, là où le MapReduce de Hadoop travaille par étape, Spark peut travailler sur la totalité des données en même temps. Il est donc jusqu'à 10 fois plus rapide pour le traitement en lots et jusqu'à 100 fois plus rapide pour effectuer l'analyse en mémoire.

Spark exécute la totalité des opérations d'analyse de données en mémoire et en temps réel. Il ne s'appuie sur des disques seulement lorsque sa mémoire n'est plus suffisante. À l'inverse, avec Hadoop les données sont écrites sur le disque après chacune des opérations[11]. Ce travail en mémoire permet de réduire les temps de latence entre les traitements, ce qui explique une telle rapidité.

Cependant, Spark ne dispose pas de système de gestion de fichier qui lui est propre. Il est nécessaire de lui en fournir un (exemples : Hadoop Distributed File System / Informix / Cassandra / OpenStack Swift / Amazon S3[12]). Il est conseillé de l'utiliser avec Hadoop qui reste actuellement la meilleure solution globale de stockage grâce à ses outils d'administration, de sécurité et de monitoring plus avancés.

En cas de panne ou de défaillance du système : les objets de données sont stockés dans ce que l'on appelle des ensembles de données distribués résiliants (RDD : Resilient Distributed Datasets) répartis sur le cluster de données permettant la récupération complète de données.

Un RDD est une collection de données calculée à partir d'une source et conservée en mémoire RAM (tant que la capacité le permet). L'un des avantages apporté par RDDs[13] se trouve dans sa capacité à conserver suffisamment d'informations sur la manière dont une partition RDD a été produite. En cas de perte d'une partition il est donc en mesure de la recalculer.

Outils[modifier | modifier le code]

Outils Apache Spark[14]

Spark SQL[modifier | modifier le code]

Spark SQL permet d'exécuter des requêtes de type SQL, transformer et charger des données sous différents formats. Le langage SQL s'appuie sur des bases de données relationnelles.

Spark Streaming[modifier | modifier le code]

Spark Streaming offre à son utilisateur un traitement des données en flux. Il utilise les données en temps-réel DStream (Discretized Stream) c'est-à-dire une série continue de RDD.

Exemple : Twitter / Amazon Kinesis

Spark Graph X[modifier | modifier le code]

Spark Graph X permet de traiter les informations issues de graphes. Graph X étend les RDD de Spark en introduisant le Resilient Distributed Dataset Graph, un multi-graphe orienté avec des propriétés attachées aux nœuds et aux arêtes.

Spark MLlib[modifier | modifier le code]

C'est une librairie de machine learning, apparu dans la version 1.2 de Spark, qui contient tous les algorithmes et utilitaires d'apprentissage classiques, comme la classification, la régression, le clustering, le filtrage collaboratif et la réduction de dimensions, en plus des primitives d'optimisation sous-jacentes. On parle souvent d'une fouille de données par apprentissage statistique.

Caractéristiques[modifier | modifier le code]

Aujourd'hui la notion de BigData est très répandue, bien qu'elle ne concerne pas tous les utilisateurs de framework. Spark s'adresse à un public qui recherche un traitement très rapide d'importants volumes de données. Chacun des acteurs concernés, recherche de plus en plus de réactivité vis-à-vis du marché d'où l'intérêt d'une analyse en temps réel[15].

Par ailleurs, la nécessité de maîtriser le langage Scala souligne toute la technicité du produit puisque ce langage récent n'est pas le plus répandu[16]. Parmi les plus utilisés on retrouve Java, C et C++.

Le mode de fonctionnement de MapReduce peut être suffisant si les besoins opérationnels et les besoins de reporting sont essentiellement statiques et s'il est possible d'attendre la fin du traitement des lots. Mais Spark apporte une valeur ajoutée par l'introduction de Spark Streaming. Cet outil permet par exemple de traiter des données remontées par capteurs dans une usine ou nécessitant une succession d'opérations. C'est le cas de la plupart des algorithmes d'apprentissage machine qui ont besoin d'effectuer des opérations multiples. Par exemple, Spark est adapté pour les campagnes de marketing en temps réel, les recommandations de produits en ligne ou encore la cybersécurité.

Notes et références[modifier | modifier le code]

  1. (en) « Databricks What is Apache Spark ? », sur databricks.com
  2. (en) « Spark AMPLab », sur https://amplab.cs.berkeley.edu
  3. (en) « Matei Zaharia », sur https://cs.stanford.edu
  4. « Spark surpasse MapReduce dans l'analyse de données », sur lemondeinformatique.fr,‎ (consulté le 24 novembre 2016)
  5. (en) « projets de la fondation Apache », sur https://projects.apache.org
  6. (en) « Apache Spark officially sets a new record in large-scale sorting », Databricks,‎ (lire en ligne)
  7. « Committers - Spark - Apache Software Foundation », sur cwiki.apache.org (consulté le 14 novembre 2016)
  8. « The Apache Spark Open Source Project on Open Hub », sur www.openhub.net (consulté le 9 novembre 2016)
  9. « Overview - Spark 2.0.1 Documentation », sur spark.apache.org (consulté le 9 novembre 2016)
  10. « Spark, boîte à outils du big data - STAT4DECISION », sur www.stat4decision.com (consulté le 24 novembre 2016)
  11. (en) « Five things you need to know about Hadoop v. Apache Spark », sur infoworld.com,‎ (consulté le 9 novembre 2016)
  12. « Qu'est qu'Apache Spark ? – Amazon Web Services (AWS) », sur Amazon Web Services, Inc. (consulté le 9 novembre 2016)
  13. https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final138.pdf
  14. « Apache Spark™ - Lightning-Fast Cluster Computing », sur spark.apache.org (consulté le 14 novembre 2016)
  15. (fr) « Pour gagner la partie, les entreprises doivent aiguiser leurs réflexes avec Apache Spark ! », lesechos.fr,‎ (lire en ligne)
  16. « TIOBE Index | TIOBE - The Software Quality Company », sur www.tiobe.com (consulté le 9 novembre 2016)

Liens externes[modifier | modifier le code]