Université du Littorale Côté d’Opale
Ecole d’ingénieur du Littorale Côté d’Opale
Projet académique
Module : BIG DATA & DATA SCIENCE
Spécialité : Master 2 Ingénierie des systèmes complexes.
Session : 1er Semestre 2023/2024.
Sujet : Valorisation des données en
temps réels avec Spark ML et Hadoop
Rédacteur : Professeur :
Abdoulaye Mamane Mr.
BOUNEFFA
Moussa Kalla Mohamed
Table des matières
1 D’où il vient (Historique de Spark) 4
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Spark : I’outil de base pour le big data . . . . . . . . . . . . . . . . . . . . 4
1.3 Le big data en France . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Big data vs machine learning : quelles différences ? . . . . . . . . . . . . . . 6
2 Spark et le big data 9
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 L’émergence d’Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4 LE MTBF : MEAN TIME BEFORE FAILURE . . . . . . . . . . . . . . . 12
2.5 Le Directed Acyclic Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.6 Les RDD : Résilient Distributed Datasets . . . . . . . . . . . . . . . . . . . 14
2.7 Les Dataframes et Datasets . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3 D’où il vient (Historique) 15
3.1 L’émergence d’Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2 Le MTBF : Mean Time Before Failure . . . . . . . . . . . . . . . . . . . . 15
3.3 Stockage distribué et HDFS . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.4 L’algorithme MapReduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.5 Spark : une évolution nécessaire . . . . . . . . . . . . . . . . . . . . . . . . 15
4 Description 16
4.1 Architecture de Spark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2 Les RDD : Résilient Distributed Datasets . . . . . . . . . . . . . . . . . . . 16
4.3 Les PairedRDD : pour les calculs de type MapReduce . . . . . . . . . . . . 16
4.4 Spark SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5 Exemple numérique (code) 17
5.1 Installation de Spark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.2 Premiers scripts avec Spark . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2
6 Utilisations possibles 18
6.1 Machine learning avec Spark ML . . . . . . . . . . . . . . . . . . . . . . . 18
6.2 Streaming avec Spark Streaming . . . . . . . . . . . . . . . . . . . . . . . . 18
6.3 Intégration avec Hadoop et HDFS . . . . . . . . . . . . . . . . . . . . . . . 18
6.4 Étude de cas : analyse des logs de cyclistes . . . . . . . . . . . . . . . . . . 18
Conclusion 19
3
Chapitre 1
D’où il vient (Historique de Spark)
1.1 Introduction
The sexiest job of the xxie century
D’après le titre d’un article de Thomas Davenport publié en octobre 2012 dans la
très prestigieuse Harvard Business Review, Data Scientist serait le job le plus sexy du
xxle siècle. Cet article décrit l’émergence de l’importance de l’analyse des données dans la
Silicon valley, et le nécessaire lien avec le business. Il décrit le data scientist comme ≪un
hybride de pirate de données, d’analyste, de communicateur et de conseiller de confiance.
La combinaison est extrêmement puissante et rare.≫ C’est à partir de cet article que le
métier de data scientist a gagné en visibilité sur la scène internationale.
1.2 Spark : I’outil de base pour le big data
C’est IBM qui en 2012 a donné la définition de base du big data, avec ≪les 3 V ≫ :
• Volume : plus d’information que ce qui tient sur un seul ordinateur.
• Variété : des informations de tout type : mail, texte, vidéo, images, tweets, cours
de bourse, informations structurées, non structurées, semi-structurées...
• Vitesse : des informations qui arrivent en grande quantité, en temps réel.
À la fin des années 2000, tous les acteurs majeurs du web (Facebook, Linkedln, Yahoo !,
Google...) ont développé leur propre outil pour gérer et analyser les données. Ces outils
s’appelaient Hive, Hadoop, Pig, Mahout...
4
Figure 1.1 – Principaux outils de l’écosystème Hadoop.
Cette multiplication des outils était la conséquence de la lutte technologique entre
différents acteurs économiques qui voulaient créer leur avantage en développant leur propre
outil big data. L’inconvénient de cette diversité d’outils était la nécessaire formation des
programmeurs.
Une solution plus élégante et intégrée est venue du monde universitaire. Développé de-
puis 2009 par l’université de Berkeley, Spark propose un certain nombre de fonctionnalités
standard intégrées dans un seul outil.
II remplace notamment Hive (pour le SQL), Pig (pour la programmation), Mahout
(pour les algorithmes d’apprentissage automatique) et Map-Reduce (pour la distribution
des calculs) par différentes briques intégrées :
✓ Spark Core pour remplacer Map-Reduce
✓ Spark SQL pour le SQL
✓ Spark MLlib pour l’apprentissage automatique
✓ Spark Streaming pour l’analyse de données en temps réel
✓ Spark GraphX pour l’analyse de données représentant des graphes
✓ Des interfaces en Python, Java, Scala ou R pour la programmation
1.3 Le big data en France
La conférence ≪big data, big value ?≫ de Télécom ParisTech en décembre 20123 marque
l’émergence du concept de big data dans le débat public français. S’en sont suivis de
nombreux investissements, tant financiers que politiques :
✓ Le big data devient l’un des sept piliers de ≪la nouvelle France industrielle 4 en
septembre 2013
✓ Les formations en big data apparaissent
✓ Les articles de presse se multiplient
✓ La Banque publique d’investissement (BPI) investit massivement dans les big data
5
Les premières formations en septembre 2013 hésitent encore dans le choix des tech-
nologies à enseigner. Plus que de big data, I’accent est mis sur le machine learning avec
des outils comme R et Python. Les concepts de bases de données distribuées (MongoDB,
Cassandra...) et de cloud computing (Amazon Web Services, Google Cloud Platform...)
étaient encore trop récents pour la formation en France.
Finalement la simplicité d’usage et l’unification des fonctions proposés par Spark en a
fait un outil de choix pour les formations et les équipes de data scientists dans le monde
entier. Spark est devenu le point d’entrée de base pour toute personne voulant tester
rapidement des concepts de big data.
Figure 1.2 – omparaison de l’évolution du nombre de recherches pour ≪ pyspark ≫ et
≪HDFS ≫ sur Stack Overflow.
1.4 Big data vs machine learning : quelles différences ?
En simplifiant, on pourrait dire que le big data est l’ensemble des techniques qui
permettent d’agréger plusieurs ordinateurs pour en créer un gros qui cumule
leurs puissances. Tandis que l’apprentissage automatique (machine learning)
est l’ensemble des techniques qui permettent d’analyser des données pour en
extraire de l’information pertinente pour résoudre un problème.
6
Depuis 2012 les entreprises ont souvent commencé leur aventure big data en achetant
de gros ordinateurs, des ≪data lakes≫ et en recrutant des data scientists. Ensuite elles ont
essayé de trouver des cas d’usage, ce qui s’avère nettement plus difficile. Acheter de la
technique est plus simple que d’analyser les enjeux business... Or il est bien plus pertinent
de commencer par réfléchir à quoi pourrait servir les données, pour remettre l’intérêt fi-
nancier et stratégique de l’entreprise au centre de la pensée data. C’est une partie qui est
souvent mise de côté par les data scientists dans les datalabs.
Pour profiter de la vague du machine learning il est donc nécessaire de penser aux cas
business qui sont associés à l’analyse de données. C’est pourquoi nous allons mettre l’ac-
cent dans ce projet sur le lien entre l’analyse des données et leur intérêt business, en nous
appuyant notamment sur la partie ≪ machine learning≫ de Spark.
Figure 1.3 – Comparaison de l’évolution du nombre de recherches pour ≪ machine
learning≫ et ≪big data≫ sur Stack Overflow
À propos de ce projet académique
Ce Projet est une introduction à Spark. II s’adresse à des data scientists, data archi-
tects, ingénieurs DevOps, programmeurs et chefs de projets qui ont besoin d’acquérir les
compétences fondamentales pour installer, configurer et utiliser Spark.
II présuppose une connaissance en programmation objet, et notamment en Python.
Le code Python étant très simple à lire ; il est possible de suivre la logique des codes sans
mettre les mains au clavier pour un chef de projet qui voudrait juste avoir un aperçu des
méthodologies des projets data.
7
Une certaine aisance avec des notions d’administration système sera la bienvenue pour
configurer le réseau (cluster) d’ordinateurs.
Remarque sur le machine learning
Ce projet n’est pas une reformulation de la documentation de Spark. II a pour vocation
de nous aider à valoriser nos données. Or cela ne saurait se limiter à un enjeu technique.
Ainsi, dans ce chapitre, nous vous proposons un code de simulation d’utilisateurs de
vélos, et de création de parcours. Nous nous mettrons ensuite dans la peau d’un data
scientist embauché dans cette entreprise pour valoriser cette donnée :
✓ Que faire ?
✓ Comment regarder les données ?
✓ Quelles questions poser ?
✓ Comment valoriser toutes ces données ?
✓ À quoi peuvent-elles servir ?
✓...
Ce chapitre est donc conçu pour vous apprendre Spark, et en même temps pour
vous guider dans les processus d’un projet data et sa valorisation au sein d’une entre-
prise. Vous en sortirez avec un outil et une méthode.
Remarques techniques
Il est courant d’utiliser Linux dans les environnements big data. Le projet est donc basé
sur un système d’exploitation compatible avec Linux, plus précisément Ubuntu et Mac
OS. Les utilisateurs Windows devront sans doute adapter les informations, notamment
sur la gestion de l’infrastructure.
Le projet est basé sur I’API Python de Spark. Cette dernière ne comprend pas la
librairie d’analyse de graphes, GraphX. Nous ne la présentons donc pas dans ce projet.
8
Chapitre 2
Spark et le big data
2.1 Introduction
Spark est un moteur de traitement de données en mémoire distribué. Contrairement
à Hadoop MapReduce, Spark permet de traiter les données en mémoire, ce qui améliore
significativement les performances pour certains types de traitements.
2.2 Objectif
Dans ce chapitre, nous allons découvrir comment le big data a émergé, quelles sont les
nouvelles problématiques qu’il pose, et pourquoi les technologies du XXe siècle n’arrivent
pas à y faire face :
• La croissance des volumes de données liée à Internet et la numérisation
• L’avancée des algorithmes de calculs distribués
• La montée en puissance des réseaux Ethernet
• La hiérarchie entre l’utilisation de la mémoire RAM et celle du disque dur
• La fin de la loi de Moore
Il s’agira aussi de savoir quelles sont les réponses apportées par Hadoop, et pourquoi
dans ce contexte Spark s’impose comme une bonne solution pour commencer à analyser
les données. Nous explorerons donc autant les enjeux techniques que logiques qui sont
apparus avec les grandes quantités de données qui apparaissent au début du XXIe siècle.
2.3 L’émergence d’Internet
La figure suivante nous montre les grandes étapes de l’informatique, depuis sa théorisation
par Alan Turing entre les deux guerres, jusqu’à l’émergence de l’Internet des objets au-
jourd’hui. Les entreprises historiques de l’informatique (Intel, Microsoft, Oracle...) ont été
9
créées au milieu du xxe siècle et les bases de données les plus populaires (MySQL/Post-
greSQL...) avant I’expansion d’Internet. Les outils historiques se sont trouvés débordés
par la croissance exponentielle du nombre d’utilisateurs et de données générés par Inter-
net. Un certain nombre de nouvelles technologies et de nouveaux concepts ont émergé
pour faire face à cette nouvelle situation et sont à la base du big data :
✓ Linux, système d’exploitation utilisé dans 80% des serveurs Internet ✓ Les systèmes
de virtualisation comme VmWare et Docker
✓ L’algorithme MapReduce qui propose un nouveau paradigme de programmation :
en passant de logiciels pensés pour une seule machine de Turing/un seul ordinateur à des
logiciels pensés pour plusieurs machines de Turing/plusieurs ordinateurs
✓ L’iPhone et l’émergence des app-stores qui mettent en avant la rapidité de développement
et I’agilité dans le business modèle des éditeurs logiciels
Figure 2.1 – 90 ans d’informatique
ù conserver les données ? Comprendre les big data nécessite de comprendre l’architec-
ture des ordinateurs. Les données sont stockées sur des disques durs. Les disques durs
sont l’un des points de faiblesse des ordinateurs, parce qu’ils sont très lents, ce qui pose
problème Iorsqu’on a beaucoup de données à lire et à stocker. Un disque dur fonctionne
à la manière d’une platine de lecture vinyle : une tête de lecture se déplace pour aller
lire de l’information sur des pistes qui contiennent les fichiers. Le déplacement de la tête
de lecture et la vitesse de rotation du disque rendent le processus de lecture assez lent,
comparé à d’autres supports sans parties mobiles (RAM, disques SSD).
Sur les meilleures cartes mères d’ordinateurs de bureau on peut mettre une dizaine de
disques durs, pour environ 500. Les disques les plus gros contiennent environ 6 To et
coûtent environ 300. Pour près de 3500 on peut donc obtenir un ordinateur avec 60 To
10
de stockage. Mais quel serait le temps nécessaire pour lire ces 60 To de manière linéaire ?
Imaginons que les disques soient en interface SATA :
✓60To = 60000Go = 60000000Mo
✓ Débit SATA = 600Mo/sec
✓ Durée de lecture : 60000000Mo/600Mo/sec = 100000sec = 27 heures
Or cette durée théorique de 27 heures peut facilement être multipliée par deux ou trois
en pratique. Avec 3500 on peut donc acquérir 60 To de stockage, mais il nous faudra 2 à
3 jours pour en lire le contenu... Voilà le problème auquel le big data cherche à répondre.
Figure 2.2 – Éléments d’un disque dur
Figure 2.3 – Différentes interfaces de disques durs, avec leur débit théorique
Une solution propriétaire, comme le système de stockage DS8870 d’IBM propose des
débits beaucoup plus importants, avec un temps de lecture d’une heure, mais pour 2 mil-
lions d’euros...
11
Ce système possède 500 disques durs et permet une lecture en parallèle des données,
ce qui explique la vitesse de lecture accélérée.
Figure 2.4 – La solution de stockage DS8870 proposée par IBM : 70 To, 80 minutes de
temps de lecture −2M d’euros.
2.4 LE MTBF : MEAN TIME BEFORE FAILURE
Le problème quand on a 500 disques durs, c’est qu’ils risquent de tomber en panne.
Figure 2.5 – Taux de panne selon la période de vie d’un disque dur. Les disques tombent
en panne à l’installation, ou bien après quelques années.
12
Avec une durée de vie moyenne de cinq ans, un administrateur technique qui gère 500
disques devrait voir 100 disques tomber en panne par an, soit deux par
13
2.5 Le Directed Acyclic Graph
Spark utilise un Directed Acyclic Graph (DAG) pour représenter les transformations
des données. Cette structure permet une optimisation automatique des étapes de traite-
ment.
2.6 Les RDD : Résilient Distributed Datasets
Les RDDs sont les structures de données fondamentales de Spark. Ils permettent une
tolérance aux pannes et une distribution des calculs sur plusieurs nœuds du cluster.
2.7 Les Dataframes et Datasets
Les Dataframes et Datasets offrent des abstractions de plus haut niveau pour la ma-
nipulation des données structurées, facilitant les opérations similaires à SQL.
14
Chapitre 3
D’où il vient (Historique)
3.1 L’émergence d’Internet
Avec l’essor d’Internet, les entreprises ont commencé à générer et à collecter des quan-
tités massives de données.
3.2 Le MTBF : Mean Time Before Failure
La fiabilité des systèmes informatiques est devenue cruciale avec la croissance des
données. Le MTBF est une mesure importante pour évaluer cette fiabilité.
3.3 Stockage distribué et HDFS
HDFS (Hadoop Distributed File System) a été développé pour permettre le stockage
distribué et la gestion de grandes quantités de données de manière fiable.
3.4 L’algorithme MapReduce
MapReduce est un modèle de programmation pour le traitement parallèle de grandes
quantités de données, introduit par Google et popularisé par Hadoop.
3.5 Spark : une évolution nécessaire
Spark a été développé pour surmonter les limitations de MapReduce, notamment en
permettant le traitement en mémoire et des itérations plus rapides.
15
Chapitre 4
Description
4.1 Architecture de Spark
L’architecture de Spark est composée de plusieurs composants : le driver, les executors,
le cluster manager, etc.
4.2 Les RDD : Résilient Distributed Datasets
Les RDDs permettent la tolérance aux pannes et la distribution des calculs. Ils sont
immuables et peuvent être recréés en cas de perte de données.
4.3 Les PairedRDD : pour les calculs de type Ma-
pReduce
Les PairedRDDs facilitent les opérations de type MapReduce en permettant de grouper
et de réduire les données.
4.4 Spark SQL
Spark SQL permet de manipuler les données à l’aide de requêtes SQL, offrant une
intégration fluide avec les RDDs et Dataframes.
16
Chapitre 5
Exemple numérique (code)
5.1 Installation de Spark
Pour commencer à utiliser Spark, il faut installer un cluster Spark. Voici un exemple
d’installation sur une machine locale.
1 # T l c h a r g e m e n t de Spark
2 wget h t t p : / / apache . m i r r o r s . t d s . n et / s p a r k / spark − 3 . 1 . 1 / spark
−3.1.1 − bin−hadoop2 . 7 . t g z
3
4 # E x t r a c t i o n des f i c h i e r s
5 t a r −x v z f spark −3.1.1 − bin−hadoop2 . 7 . t g z
6
7 # C o n f i g u r a t i o n des v a r i a b l e s d ’ environnement
8 e x p o r t SPARK HOME=˜/spark −3.1.1 − bin−hadoop2 . 7
9 e x p o r t PATH=$PATH:$SPARK HOME/ b i n
5.2 Premiers scripts avec Spark
Voici un exemple de script pour démarrer un calcul simple avec Spark en utilisant
PySpark.
1 from pyspark . s q l import S p a r k S e s s i o n
2
3 # I n i t i a l i s a t i o n de l a s e s s i o n Spark
4 s p a r k = S p a r k S e s s i o n . b u i l d e r . appName ( ” example ” ) . getOrCreate ( )
5
6 # C r a t i o n d ’ un DataFrame
7 data = [ ( ” A l i c e ” , 1 ) , ( ”Bob” , 2 ) , ( ”Cathy” , 3 ) ]
8 d f = s p a r k . createDataFrame ( data , [ ”Name” , ” Value ” ] )
9
10 # A f f i c h a g e du DataFrame
11 d f . show ( )
17
Chapitre 6
Utilisations possibles
6.1 Machine learning avec Spark ML
Spark MLlib est une bibliothèque de machine learning qui offre des outils pour la
classification, la régression, le clustering, et plus encore.
6.2 Streaming avec Spark Streaming
Spark Streaming permet le traitement des flux de données en temps réel, utile pour
les applications nécessitant une analyse rapide des données entrantes.
6.3 Intégration avec Hadoop et HDFS
Spark s’intègre facilement avec Hadoop et HDFS pour le stockage et le traitement des
données massives, offrant une solution complète pour les besoins de big data.
6.4 Étude de cas : analyse des logs de cyclistes
Un exemple d’application de Spark est l’analyse des fichiers de logs des cyclistes pour
extraire des informations utiles sur les habitudes de déplacement.
18
Conclusion
Apache Spark est un outil puissant pour le traitement des données massives, offrant
des performances élevées grâce à son traitement en mémoire. Sa capacité à s’intégrer avec
divers systèmes et à gérer des tâches de machine learning et de streaming en fait un choix
idéal pour de nombreuses applications big data.
19