Apache Spark

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
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 1.2.1 ()[1]
1.4.1 ()[2]
1.4.0 ()[3]
1.6.0 ()[4]
1.5.2 ()[5]
1.5.1 ()[6]
1.5.0 ()[7]
2.0.0 ()[8]
2.0.1 ()
2.1.0 ()[9]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
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[10]) 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[11], Spark est aujourd'hui un projet de la fondation Apache. Ce produit est un cadre applicatif de traitements big data pour effectuer des analyses complexes à grande échelle.

Historique[modifier | modifier le code]

En 2009, Spark fut conçu par Matei Zaharia[12] 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[13].

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

En 2014, Spark a gagné le Daytona GraySort Contest[15] 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)[16]. Ainsi depuis 2015 on recense plus de 1000 contributeurs[17].

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

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[19].

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'à dix fois plus rapide pour le traitement en lots et jusqu'à cent 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[20]. 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[21]). 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ésilients (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 vive (tant que la capacité le permet). L'un des avantages apporté par RDDs[22] 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[23]

Spark SQL[modifier | modifier le code]

Spark SQL permet d'exécuter des requêtes en langages SQL pour charger et transformer des données. Le langage SQL est issu des bases de données relationnelles, mais dans Spark, il peut être utilisé pour traiter n’importe quelles données, quel que soit leur format d’origine.

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 bibliothèque d'apprentissage automatique, 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 big data est très répandue. Spark s'adresse à un public qui recherche un traitement efficace de données trop volumineuses pour être stockés sur un seul ordinateur. 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[24].

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 automatique 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é.

Interfaces avec d'autres langages de programmation[modifier | modifier le code]

Spark fournit par défaut des interfaces de programmation qui permettent de l’utiliser depuis les langages scala, java, python, et R.

Par ailleurs, le projet indépendant EclairJS[25] permet d’écrire des programmes Spark en JavaScript.

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

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

Liens externes[modifier | modifier le code]