Rapide, efficace, riche, adaptable… Spark a le vent en poupe pour tout ce qui concerne les traitements Big Data ! Voici 5 bonnes raisons pour lesquelles ce système de traitement de données open source n’est pas une mode… 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 ? Pourquoi l’utiliser et comment fonctionne-t-il ?
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 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.
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 ? Tout simplement 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.
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).
Au delà du buzz, Spark dispose donc de vrais atouts. J’espère vous avoir convaincu de tester cette solution. Pour aller plus loin, continuez de suivre ce blog, et découvrez mes 3 tutoriels dédiés à Spark Streaming : de la gestion des données à la maintenance des traitements, de la transformation des données aux tests unitaires, et les tests de performance.
👉 Retrouvez toute notre actu en temps réel en nous suivant sur LinkedIn 👈
Commentaire (1)
Votre adresse de messagerie est uniquement utilisée par Business & Decision, responsable de traitement, aux fins de traitement de votre demande et d’envoi de toute communication de Business & Decision en relation avec votre demande uniquement. En savoir plus sur la gestion de vos données et vos droits.