5 raisons de choisir Spark pour les traitements de vos Big Data

Spark est la solution à la mode dans le monde complexe du Big Data. Mais connaissez-vous réellement les raisons de cet engouement pour ce type de traitements ?

spark big data reactive traitements

1 – Spark fonctionne en mémoire

Ceux qui ont déjà travaillé sur Hadoop ont noté le temps de réponse relativement long des traitements sous Pig ou Hive relativement à ce que nous connaissons avec une base de données. C’est le paradoxe de ce type de plateforme conçue pour être avant tout performante sur de gros volumes de données (certains savent aussi que les bases de données ne renvoient pas toujours des résultats quand la volumétrie est extrême). Quoi qu’il en soit, cette première prise de contact peut en décourager certains. Ce n’est pas le cas avec Spark.

La solution s’appuie sur les mêmes concepts qu’Hadoop (calcul distribué, Map Reduce) mais ici les données sont montées en mémoire et les traitements sont de fait jusqu’à 100 fois plus rapide que sur Hadoop.

A noter que Spark reste un moteur d’exécution généraliste : il privilégie les traitements en mémoire mais peut aussi bien opérer avec des données sur disque. Spark a récemment battu le record précédemment détenu par Hadoop pour trier les 100 To de données du Daytona GraySort Contest en 23 minutes.

World record set for 100 TB sort by open source and public cloud team - Crédits image : opensource.com

World record set for 100 TB sort by open source and public cloud team – Crédits image : opensource.com

 

2 – Spark s’intègre à votre architecture Hadoop

Spark peut fonctionner de manière autonome et en mode distribué car l’outil dispose de son propre mécanisme de clusterisation. Mais l’intérêt est de pouvoir bien entendu l’intégrer à un cluster Hadoop. Or, cela se fait très simplement. Yarn continue de centraliser les besoins et gérer le pilotage des ressources entre des traitements Spark et d’autres traitements de type Map Reduce.

Pourquoi garder Hadoop me direz vous si Spark est si performant ? Parce que pour l ‘instant, Hadoop reste la meilleure solution globale de stockage avec des outils d’administration, de sécurité et de monitoring plus avancés.

Ce choix, Oracle l’a fait pour sa toute nouvelle solution de découverte et d’analyse de données, Big Data Discovery. Le produit s’installe sur un cluster Hadoop (exclusivement Cloudera) et s’appuie très largement sur Spark pour ses traitements.

Oracle Big Data Discovery

Oracle Big Data Discovery. Crédits image : Oracle

 

3 – Spark s’appuie sur un langage riche : Scala

On peut travailler sous Spark avec plusieurs langages comme Java ou Python. Mais Spark devient vraiment intéressant avec son langage natif Scala.

Des spécialistes comme James Gosling, l’inventeur de Java, prédisent d’ailleurs un bel avenir à ce langage. Scala, le langage qui va remplacer Java.

Langage objet

Scala est un langage objet. Comme tous les langages objets, cette possibilité simplifie l’écriture de code complexe et rend plus lisible les programmes. La maintenance est facilitée. En Scala, tous les éléments sont objets, même un nombre de type entier par exemple.

Programmation fonctionnelle

Scala est un langage fonctionnel. La programmation fonctionnelle se distingue de la programmation impérative qui s’appuie elle sur des changements d’états d’une variable. Scala, a contrario, préconise l’utilisation de variables non modifiables. Un calcul consiste alors à appliquer des fonctions successives à une variable pour définir une nouvelle variable. Cette approche est particulièrement bien adaptée aux traitements de données répartis sur différents datanodes.

Exemple:

val immobilisations = depenses.filter(x => (x.datefin).after(x.datedebut)).distinct()

Dans cet exemple, je pars d’une variable ‘depenses’ (distribuée sur plusieurs datanodes). Cette variable est composée de plusieurs attributs. J’applique un filtre sur un attribut de type date pour ne garder que les lignes dont la date de fin est strictement supérieure à la date de début puis j’opère un distinct pour dédoublonner mes lignes résultats.

Le tout tient sur une seule ligne de code 😉 !

 

4 – Spark est paresseux … et c’est bien 😉

Lorsque Spark charge les données sur son cluster, les données deviennent de type RDD (Resilient Distributed Datasets). Deux types de méthodes sont disponibles pour travailler avec ces RDD. Les méthodes de type « transformation » modifient les données, opèrent des calculs mais elles ne sont pas exécutées tout de suite. Elles sont stockées dans une pile d’instructions dans l’attente de l’appel d’une méthode de type « action » qui va déclencher l’exécution de l’ensemble des instructions en mémoire.

Cette « approche paresseuse » (Lazy Evaluation) est très intéressante car elle permet de développer les programmes en ligne de commande, sans perte de temps entre chaque instruction (car on utilise le plus souvent des transformations). Cette approche permet aussi à l’optimiseur d’être plus efficace.

 

5 – Spark intègre tous les outils du data scientist : Streaming, SQL, Machine Learning et Graphes

Spark dispose de nombreuses librairies avancées. L’objectif recherché par les inventeurs de Spark est d’offrir différentes vues et moyens d’accéder aux données sans devoir changer d’outil. La dernière librairie disponible est SparkR qui va permettre aux habitués du langage R de travailler nativement sur un cluster distribué.

On peut imaginer un cas théorique où le data scientist récupère par exemple des données en temps réel en provenance d’objets connectés (librairie Spark Streaming), modélise les données dans des tables et exécute des requêtes SQL pour démarrer une analyse de données (librairie DataFrames and SQL). Au regard des résultats, il s’intéresse à une série de capteurs et cherche à identifier des corrélations (librairie MLlib Machine Learning).

 

Conclusion

SparkAu delà du buzz, Spark dispose de vrais atouts.

J’espère vous avoir convaincu de tester cette solution. Pour aller plus loin, continuez de suivre ce blog, on vous reparlera à coup sûr de Spark !

 

  • A propos
  • Derniers articles

2 Comments

  1. Auto-sales 22 juin 2016 Répondre

    Spark dispose de nombreuses librairies avancées. L’objectif recherché par les inventeurs de Spark est d’offrir différentes vues et moyens d’accéder aux données sans devoir changer d’outil. La derniere librairie disponible est SparkR qui va permettre aux habitués de ce langage de travailler nativement sur un cluster distribué.

Rétroliens pour ce billet

  1. […] enrichie par des mises à jour sur les réseaux de neurones et sur le Deep Learning ainsi que sur Spark, entre […]

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*