Présentation de Spark

(Présentation de Spark en collaboration avec @elimatheli)

Spark est un framework de calcul distribué open-source utilisant des composants et une architecture définie. Spark permet de travailler sur l'ensemble des données en même temps ce qui lui donne une vitesse de traitement importante. De plus il travaille directement dans la mémoire et utilise des disques que lorsque que la mémoire n'a plus de capacité.

Composants de Spark

Spark est composé de différents éléments dont Spark core qui est le noyeau de Spark ainsi que d'autres :

  • Spark SQL permet l'utilisation de requêtes SQL sur les données traitées par Spark.
  • Spark streaming permet d'analyser des données interactives.
  • MLib est la bibliothèque fournissant les algorithmes à Spark.
  • GraphX est un moteur d'exécution pour le traitement en utilisant des graphes.

Composant de spark
source : https://liliasfaxi.github.io/Atelier-Spark/p2-spark/

Architecture de Spark

Une application Spark va fonctionner sur un cluster. L'application va être coordonnée par le SparkContext qui est un objet dans le programme principal qui est appelé driver program servant de leader dans la suite.

Spark peut utiliser plusieurs types de cluster qui peuvent varier d'une application à une autre en fonction des besoins.

  • Standalone Scheduler qui est le gestionnaire de cluster de Spark et est en conséquences facile à utiliser.
  • Mesos qui est un gestionnaire de cluster qui fonctionne aussi pour le MapReduce
  • YARN qui est le gestionnaire de ressources de Hadoop2
  • Kubernetes qui est un système open-source pour le déploiement et la gestion de conteneurs toujours plus populaire.

Ces gestionnaires vont servir à l'exécution d'applications Spark. Lorsque le Driver program est connecté, il va lancer des exécuteurs, jouant le rôle de suiveurs, sur les noeuds d'un cluster. Ces exécuteurs vont traiter et stocker des données pour l'application. Ils attendent du Driver program de recevoir le code de l'application ainsi que les tâches à effectuer.

Architecture de spark
source : https://liliasfaxi.github.io/Atelier-Spark/p2-spark/

Spark et Hadoop

On voit souvent des articles qui comparent Hadoop MapReduce et Spark. Ce qui est une erreur car les deux ne sont pas des opposés. Ils peuvent fonctionner l'un sans l'autre mais peuvent aussi fonctionner ensemble pour être plus efficace.

MapReduce lui va déplacer les données à traiter entièrement sur des disques alors que Spark va tout mettre dans la RAM (Random Access Memory) ce qui fait qu'il sera plus rapide que MapReduce mais Spark a besoin d'un système de fichiers comme point de départ. C'est dans ce cas là que les deux travaillent ensemble. Hadoop va fournir le système de fichier que Spark demande.

Une autre différence entre Spark et MapReduce est que MapReduce ne travaille que par lots alors que Spark fait du temps réel. En réalité Spark fait un traitement proche du temps réel car il ne traite pas un flux de données mais des petits paquets de données mais la vitesse de traitement donne un résultat proche du temps réel.

Différence MapReduce et Spark

Avantages/défauts

Spark a des avantages mais aussi des défauts.

Parmi ces avantages, il ya :

  • Performance : avec Spark la vitesse de traitement des données est 100x plus rapide qu'avec MapReduce.
  • Résistance aux pannes : Spark offre une résistance aux pannes grâce au RDD (Resilients Distributed Datasets) qui permet la récupération de données en cas de pannes.
  • Plusieurs langages : Spark fonctionne avec plusieurs langages Java, R, Python et Scale laissant un choix en fonction des préférences qu'on peut avoir avec un langage.

Parmi les défauts, il ya :

  • Coûteux : L'utilisation de la RAM par Spark pour faire de nombreux traitements implique une très forte utilisation de la mémoire sur les clusters.
  • Système de fichiers : Comme vu précédemment, Spark n'a pas de système de fichiers ce qui oblige à mettre en place un système de stockage.
  • Taille des fichiers : Spark va diviser le traitement de fichiers sur plusieurs exécuteurs. Mais il est optimisé sur les grandes tailles de fichiers mais pas sur les petites tailles qui sont plus couteuses à traiter.

Source

H2
H3
H4
3 columns
2 columns
1 column
3 Comments
Ecency