20/01/2025
Big Data, état de l'art
Dr. Heni Bouhamed
Co-Founder of DataCamp Training [Link]
Co-Founder of ZettaSpark [Link] 1
Senior Lecturer at SFAX University, Tunisia
Big Data and AI Trainer at [Link], m2ii Formation and [Link], France
[Link]@[Link]
Big Data, état de l'art
Objectifs pédagogiques
À l’issue de la formation, le participant sera en mesure de :
• Découvrir les principaux concepts du Big Data
• Identifier les enjeux économiques
• Évaluer les avantages et les inconvénients du Big Data
• Comprendre les principaux problèmes et les solutions potentielles
• Identifier les principales méthodes et champs d'application du Big Data
• Appréhender les avantages et les contraintes du Big Data
Public concerné
• Directeurs SI, Responsables SI, Chefs de projets, Architectes, Consultants
ou toute personne amenée à participer à un projet Big Data.
Prérequis 2
• Connaissances de base des architectures techniques.
1
20/01/2025
Big Data, état de l'art
Plan du support:
• Big Data en bref!
• Hadoop Distributed File System
• MapReduce
• Big Data Analytics avec Apache Hive
• Big Data bases avec Apache Hbase/Phoenix
• Ingestion de données avec Apache Flume/Kafka/Sqoop
• Apache Spark
• Récapitulatif de l’écosystème
Principale source d'informations et de figures : The Apache Software Foundation
([Link]) 3
2
20/01/2025
Big Data en bref!
500 heures de vidéo/minutes
5 millions/jour
30 milliards/mois
1 péta-octets à gérer/jour
Des centaines de flux vidéo
90% des données/2 dernières années
5
Solution?
Big Data en bref!
Clusters : problématiques et défis à relever dans le contexte
Big data
• L’accès et partage des ressources pour toutes les machines,
• L’extensibilité,
• L’hétérogénéité,
• La tolérance aux pannes*,
• La transparence,
6
• La possibilité de mise en œuvre en local et/ou en cloud.
3
20/01/2025
Big Data en bref!
Apache Hadoop (2006) Projet de la fondation Apache – Open Source,
composants complètement ouverts:
• Framework déjà disponible « off the shelf »,
• Permettant l'exécution de tâches parallèles,
• Qui puisse être installé et configuré rapidement au sein d'une
entreprise/d'une université,
• Permettant la création de clusters de taille variables extensibles à
tout moment,
7
• S'occupe de toutes les problématiques liées au calcul distribué, …
Big Data en bref!
Historique de Hadoop:
• 2003/2004 : le département de recherche de Google publie
GFS1 (un système de fichier distribué) et le paradigme
Map/Reduce pour le calcul distribué.
• 2006: Doug Cutting créé le projet Open Source de la fondation
Apache, qu'il nomme Hadoop*.
• 2008: Bien développé, Hadoop est exploité par Yahoo.
• 2011: Hadoop est désormais utilisé par de nombreuses autres
entreprises et par des universités, le cluster Yahoo comporte
42000 machines et des centaines de Petaoctets1 d'espace de 8
stockage.
4
20/01/2025
Big Data en bref!
Qui utilise Hadoop?
et des centaines d'entreprises et d’universités à travers le monde…
9
Hadoop Distributed File System
10
5
20/01/2025
Hadoop Distributed File System
Les caractéristiques de Hadoop Distributed File System (HDFS) :
• Système de stockage distribué,
• Données répliqués,
• Transferts de données optimisés
11
Hadoop Distributed File System
Complémentarité entre Yet Another Resource Negotiator (YARN)
et HDFS pour l’optimisation :
• YARN est en communication constante avec HDFS,
• Il peut donc optimiser le positionnement des données à traiter
de telle sorte qu'une machine puisse accéder aux données
relatives à la tâche qu'elle doit effectuer localement, sans
avoir besoin de les demander à une autre machine.
12
6
20/01/2025
Hadoop Distributed File System
HDFS repose sur deux serveurs (des daemons):
• Le NameNode, qui stocke les informations relatives aux noms
de fichiers, leurs nombres de blocs ainsi que leurs
emplacements. Il y a un seul NameNode (actif) dans tout le
cluster Hadoop,
• Le DataNode, qui stocke les blocs de données eux-mêmes. Il y
a un DataNode pour chaque machine au sein du cluster,
13
Hadoop Distributed File System
• Par défaut, les données sont divisées en blocs de 128MB
(configurable).
• HDFS est inspiré de GFS, un système de fichier distribué conçu
par Google.
• L'implémentation de HDFS a son origine dans un whitepaper
issu du Département de recherche de Google (« The Google
File System », 2003).
14
7
20/01/2025
Hadoop Distributed File System
Écriture d'un fichier
• Admettons qu'on souhaite stocker un fichier dont le nom est
page_livre.txt sur HDFS,
• Le fichier va être diviser en blocs de 128 mb (ou autre, selon la
configuration) avant d’être présenter au NameNode,
• Le NameNode va alors indiquer qu'il doit stocker (on suppose
qu'on ait ici 2 blocs) le bloc 1 sur le DataNode numéro 3, et le
bloc 2 sur le DataNode numéro 1.
• Par ailleurs, les DataNodes s'occuperont – en informant le
NameNode – de répliquer les données entre eux pour éviter
toute perte de données. 15
Hadoop Distributed File System
Écriture d'un fichier
16
8
20/01/2025
Hadoop Distributed File System
Lecture d'un fichier
• Admettons qu'on souhaite lire le fichier page_livre.txt.
• Le NameNode répondra par exemple « Il est composé de deux
blocs. Le premier est disponible sur le DataNode 3 et 2, le
second sur le DataNode 1 et 3 ».
• Les DataNodes seront contactés directement en leurs
demandant de transmettre les blocs concernés.
• En cas d'erreur/non réponse d'un des DataNode, il passe au 17
suivant dans la liste fournie par le NameNode.
Hadoop Distributed File System
Lecture d'un fichier
18
9
20/01/2025
Hadoop Distributed File System
La commande hdfs dfs
• La commande permettant de stocker ou d’extraire des fichiers de
HDFS est l'utilitaire console hdfs (ou hadoop), avec l'option dfs (ou
respectivement fs).
Pour stocker le fichier [Link] sur HDFS dans le répertoire /data_input:
• hdfs dfs -put [Link] /data_input/
Pour obtenir le fichier /data_input/[Link] de HDFS et le stocker dans
le chemin /output:
• hdfs dfs -get /data_input/[Link] /[Link] [Link]
Pour créer le répertoire /data_input
• hdfs dfs -mkdir /data_input
Pour supprimer le fichier /data_input/[Link]
• hdfs dfs -rm /data_input/[Link]
19
d'autres commandes usuelles: -ls, -cp, etc...
Hadoop Distributed File System
20
10
20/01/2025
Hadoop Distributed File System
Remarques
• Hadoop réplique lui-même les données: les fichiers sont
disponibles à tout moment sur plusieurs DataNodes, et si une
machine tombe en panne, on a toujours accès aux données
grâce à la réplication.
• Si les données proviennent d'une base de données, on sera
obligé avant d'exécuter le traitement Hadoop d'extraire les
données de la base via des requêtes SQL et de les stocker sur
HDFS.
• De même, pour récupérer les résultats au sein d'une base de
données, on devra extraire le ou les fichiers des résultats 21
depuis HDFS, et les ré-importer dans la base de données.
22
11
20/01/2025
MapReduce
Présentation
• C’est une stratégie algorithmique dite du divide and conquer /
diviser pour régner …
• De multiples approches, basées sur ce paradigme, existent et
ont existé,
• MapReduce est un paradigme visant à généraliser les
approches existantes,
23
MapReduce
Présentation
MapReduce définit deux opérations distinctes à effectuer sur les
données d'entrée:
• La première, MAP, va transformer les données d'entrée en une
série de couples clef/valeur
• La seconde, REDUCE, va appliquer un traitement à toutes les
valeurs de chacune des clefs distinctes produite par
l'opération MAP
24
12
20/01/2025
MapReduce
Exemple :
• Imaginons qu’on dispose d’un texte écrit en langue Française.
On souhaite déterminer pour un travail de recherche quels
sont les mots les plus utilisés au sein de ce texte.
• Les données d'entrée sont constituées du contenu du texte.
• Première étape: déterminer une manière de découper (split)
les données d'entrée pour que chacune des machines puisse
travailler sur une partie du texte.
• On peut par exemple décider de découper les données
d'entrée ligne par ligne. Chacune des lignes du texte sera un
fragment de nos données d'entrée. 25
MapReduce
Exemple :
Nos données d'entrée (le texte):
• Celui qui croyait au ciel
• Celui qui n'y croyait pas
• Fou qui fait le délicat
• Fou qui songe à ses querelles
(Louis Aragon, La rose et le Réséda, 1943, fragment)
Pour simplifier les choses, on peut, avant le découpage,
supprimer toute ponctuation et tous les caractères accentués. On
peut également passer l'intégralité du texte en minuscules.
26
13
20/01/2025
MapReduce
Exemple :
• Après découpage:
• on obtient 4 fragments depuis nos données d'entrée.
27
MapReduce
Exemple :
• On doit désormais déterminer la clef à utiliser pour notre
opération MAP, et écrire le code de l'opération MAP elle-
même.
• Pour notre exemple : le mot-lui-même,
• Pour notre opération MAP : on va simplement parcourir le
fragment qui nous est fourni et pour chacun des mots générer
le couple clef/valeur: (MOT ; 1)
• La valeur indique ici l’occurrence pour cette clef - puisqu'on a
croisé le mot une fois, on donne la valeur « 1 » 28
14
20/01/2025
MapReduce
Exemple :
• L’algorithme de notre opération MAP sera donc
POUR MOT dans LIGNE, FAIRE:
GENERER COUPLE (MOT; 1)
• Pour chacun de nos fragments, les couples (clef; valeur)
générés seront donc:
(celui;1) (qui;1) (croyait;1) (au;1) (ciel;1)
29
MapReduce
Exemple :
• Une fois notre opération MAP effectuée (de manière
distribuée), Hadoop groupera (shuffle) tous les couples par
clef commune.
• Cette opération est effectuée automatiquement par Hadoop
(YARN à partir de Hadoop2.X). Elle est, là aussi, effectuée de
manière distribuée en utilisant un algorithme de tri distribué,
de manière récursive.
• Après son exécution, on obtiendra les 15 groupes suivants:
30
15
20/01/2025
MapReduce
Exemple :
• Il nous reste à créer notre opération REDUCE, qui sera appelée
pour chacun des groupes/clef distincte.
• Dans notre cas, elle va simplement consister à additionner
toutes les valeurs liées à la clef spécifiée:
TOTAL=0
POUR COUPLE dans GROUPE, FAIRE:
TOTAL=TOTAL+1
RENVOYER TOTAL 31
MapReduce
Exemple :
• Une fois l'opération REDUCE effectuée, on obtiendra donc une
valeur unique pour chaque clef distincte. En l’occurrence,
notre résultat sera:
32
16
20/01/2025
MapReduce
Schéma général :
33
MapReduce
Conclusion
• Notre exemple est évidemment trivial, et son exécution aurait
été instantanée même sur une machine unique,
• L’intérêt du modèle MapReduce et de pouvoir bénéficier
automatiquement de la possibilité d'effectuer un/des
traitement sur un nombre variable de machines de manière
distribuée…
34
17
20/01/2025
MapReduce
Récapitulation
On distingue donc 4 étapes distinctes dans un traitement
MapReduce:
• Découper (split) les données d'entrée en plusieurs fragments.
• Mapper chacun de ces fragments pour obtenir des couples
(clef ; valeur).
• Grouper (shuffle) ces couples (clef ; valeur) par clef.
• Réduire (reduce) les groupes indexés par clef en une forme
finale, avec une valeur pour chacune des clefs distinctes.
En modélisant le problème à résoudre de la sorte, on le rend
parallélisable – chacune de ces tâches à l'exception de la
première seront effectuées de manière distribuée. 35
MapReduce
Récapitulation
Pour résoudre un problème via la méthodologie MapReduce
avec Hadoop, on devra donc:
• Choisir une manière de découper les données d'entrée de
telle sorte que l'opération MAP soit parallélisable.
• Définir quelle CLEF à utiliser pour notre problème.
• Ecrire le programme pour l'opération MAP.
• Ecrire le programme pour l'opération REDUCE.
36
18
20/01/2025
MapReduce
Exemple 2 – Statistiques web
• Un autre exemple: on souhaite compter le nombre de
visiteurs sur chacune des pages d'un site Internet.
• On dispose des fichiers de logs sous la forme suivante:
37
MapReduce
Exemple 3 – Graphe social
• On administre un réseau social comportant des millions
d'utilisateurs.
• Pour chaque utilisateur, on a dans notre base de données la
liste des utilisateurs qui sont ses amis sur le réseau (via une
requête SQL).
• On souhaite afficher quand un utilisateur va sur la page d'un
autre utilisateur une indication « Vous avez N amis en
commun » en lui donnant la possibilité de les connaitre.
• On ne peut pas se permettre d'effectuer une série de requêtes
SQL à chaque fois que la page est accédée (trop lourd en
traitement)…
• Solution : 38
19
20/01/2025
MapReduce
Exemple 3 – Graphe social
• Ici, nos données d'entrée sous la forme Utilisateur => Amis:
Puisqu'on est intéressé par l'information « amis en commun entre
deux utilisateurs » et qu'on aura à terme une valeur par clef, on va
choisir pour clef la concaténation entre deux utilisateurs.
39
MapReduce
Exemple 3 – Graphe social
• Notre opération MAP va se contenter de prendre la liste des
amis fournie en entrée, et va générer toutes les clefs distinctes
possibles à partir de cette liste. La valeur sera simplement la
liste d'amis, telle quelle.
• On fait également en sorte que la clef soit toujours triée par
ordre alphabétique (clef « B-A » sera exprimée sous la forme «
A-B »).
• Ce traitement peut paraître contre-intuitif, mais il va à terme
nous permettre d'obtenir, pour chaque clef distincte, deux
couples (clef;valeur): les deux listes d'amis de chacun des 40
utilisateurs qui composent la clef.
20
20/01/2025
MapReduce
Exemple 3 – Graphe social
• Le pseudo code de notre opération MAP:
UTILISATEUR = [PREMIERE PARTIE DE LA LIGNE]
POUR AMI dans [RESTE DE LA LIGNE], FAIRE:
SI UTILISATEUR < AMI:
CLEF = UTILISATEUR+"-"+AMI
SINON:
CLEF = AMI+"-"+UTILISATEUR
GENERER COUPLE (CLEF; [RESTE DE LA LIGNE])
• Par exemple, pour la première ligne: A => B,C, D
• On obtiendra les couples (clef;valeur): 41
MapReduce
Exemple 3 – Graphe social
• Pour la seconde ligne: B => A, C, D, E
• Pour la troisième ligne: C => A, B,D,E
• ...et ainsi de suite pour nos 5 lignes d'entrée.
42
21
20/01/2025
MapReduce
Exemple 3 – Graphe social
• Une fois l'opération MAP effectuée,…
• Le résultat sur la base de nos données d'entrée:
43
on obtient bien, pour chaque clef « USER1-USER2 », deux listes
d'amis: les amis de USER1 et ceux de USER2.
MapReduce
Exemple 3 – Graphe social
Il nous faut enfin écrire notre programme REDUCE.
• Il va recevoir en entrée toutes les valeurs associées à une clef. Son
rôle va être très simple: déterminer quels sont les amis qui
apparaissent dans les listes (les valeurs) qui nous sont fournies.
Pseudo-code:
LISTE_AMIS_COMMUNS=[] // Liste vide au départ.
SI LONGUEUR(VALEURS)!=2, ALORS: // Ne devrait pas se produire.
RENVOYER ERREUR
SINON:
POUR AMI DANS VALEURS[0], FAIRE:
SI AMI EGALEMENT PRESENT DANS VALEURS[1], ALORS:
// Présent dans les deux listes d'amis, on l'ajoute.
LISTE_AMIS_COMMUNS+=AMI
RENVOYER LISTE_AMIS_COMMUNS 44
22
20/01/2025
MapReduce
Exemple 3 – Graphe social
• Après exécution de l'opération REDUCE pour les valeurs de
chaque clef unique, le résultat est le suivant :
45
MapReduce
MapReduce du word count en python (map)
46
23
20/01/2025
MapReduce
MapReduce du word count en python (reduce)
47
MapReduce
Conclusion
• En utilisant le modèle MapReduce, on a ainsi pu créer deux
programmes très simples (nos programmes MAP et REDUCE) de
quelques lignes de code seulement.
• Mieux encore, notre traitement est parallélisable: même avec des
dizaines de millions d'utilisateurs, le traitement sera effectué
rapidement (selon la taille du cluster).
• Pour aller plus vite, il nous suffit de rajouter plus de machines.
• Pour notre réseau social, il suffira d'effectuer ce traitement toutes
les nuits à heure fixe, et de stocker les résultats dans une table.
48
24
20/01/2025
49
Apache Hive
Pourquoi Hive?
• C’est une infrastructure pour Entrepôt de Données,
• Permet la manipulation de grandes masses de données,
• C’est une alternative (plus simple à utiliser) à Mapreduce et à
Apache Pig,
• Exploiter la simplicité d’sql,
50
25
20/01/2025
Apache Hive
Architecture
• Hive se base sur Hadoop,
• Hive stocke ses données dans HDFS,
• Hive compile des requêtes SQL en jobs MapReduce* et les
exécute sur le cluster Hadoop
51
Apache Hive
Architecture
52
26
20/01/2025
Apache Hive
HiveQL (SQL pour Hive) supporte:
• DDL--Data Definition Language (Create, Alter, Drop),
• DML--Data Manipulation Language (load,
Insert,Select),
• Fonction utilisateurs (LOWER, UPPER …),
53
• Appel à des programmes externe MapReduce,
54
27
20/01/2025
Apache Hbase
Modèle orienté Colonne
• l'équivalent de plusieurs tables d'une base de données
relationnelle, réunies dans une seule grande table sous forme
de colonnes, éliminant ainsi les jointures,
• Ce modèle permet d'enregistrer des volumes très importants
de données simples, généralement sur des clusters,
• Souvent répartis sur plusieurs data centres,
• Il est destiné pour de très gros stockages comme Google ou
Facebook.
55
Apache Hbase
Historique
• 2006 - Doug Cutting a crée Hadoop (framework de stockage
en cluster)
• 2006 - Google utilise Hadoop pour créer BigTable (SGBD
BigData propriétaire)
• 2007 - création de HBase (= BigTable en version open source)
par Powerset
• 2008 - Powerset se fait racheter par Microsoft qui abandonne
le développement de HBase (car il est en open source)
• 2008 - Hadoop devient le projet principal de la fondation
Apache
• 2010 - HBase devient le projet principal de la fondation
Apache 56
28
20/01/2025
Apache Hbase
Architecture
• Système de gestion des données pour un environnement distribué
qui doit être couplé au gestionnaire de fichiers Hadoop,
• Hbase gère la partie logique, tandis qu'Hadoop gère la partie
physique,
• C'est un modèle de stockage BigData orienté colonne, basé sur le
principe de BigTable de Google.
57
Apache Hbase
Architecture
58
29
20/01/2025
Apache Hbase
Architecture
• Les données sont gérées au sein de grandes tables (appelées
HTable) composées de lignes (nommées row) et de familles de
colonnes (family).
• Les familles de colonnes sont sous-divisées en colonnes (qualifier).
• Les lignes sont des identifiants dont la valeur est unique, soit
l'équivalent de la clé primaire dans le mode relationnel.
59
Apache Hbase
Architecture
60
30
20/01/2025
Apache Hbase
Architecture
61
Apache Hbase
Se connecter à Hbase:
• Client / API natif en Java
• Serveur Thrift (Python, Ruby, C++, PHP, etc)
• Apache Hive
• Apache Pig*
• HBase shell
62
• Serveurs REST
31
20/01/2025
Apache Hbase
Les services en back end:
L’architecture Hbase présente trois principaux services :
• Le Hmaster : responsable de la coordination entre les régions
du cluster et de l’exécution d’opérations administratives,
• Le HRegionServer : responsable de la répartition des sous-
parties des données de tables,
• Le QuorumPeer (service de ZooKeeper) : coordinateur de la
destination d'archivage des données dans un système
distribué. 63
64
32
20/01/2025
Apache Flume
• C’est une solution de collecte, d’agrégation et de transfert de
gros volumes de logs,
• Il a la fonctionnalité native d’écriture dans HDFS au fil de l’eau,
• Gére des débits importants, scalable et distribué,
• Fait partie de l’écosystème Big Data open source Hadoop.
65
Apache Flume
Historique
• Développé au départ chez Cloudera (éditeur Hadoop) en open
source sous License Apache (première version stable en 2010),
• En 2011, Flume NG (Next Generation) remplace Flume OG
pour apporter une réponse à ces limitations,
• Flume NG est devenu Top Level Apache project depuis Juillet
2012.
66
33
20/01/2025
Apache Flume
Architecture
• Agents collés aux sources d’événements
• Agents qui vont se charger de consolider les logs afin de les écrire
dans un référentiel centralisé, typiquement un cluster HDFS ou
une base de données HBase
Anatomie d’un agent
67
Apache Flume
Source/channel/sink
Principaux types de sources :
• ExecSource : log de commande bash simple,
• AvroSource : écouter un port TCP et recevoir des logs au format Avro,
• SyslogSource : router les logs d’un serveur syslog vers Flume,
• SpoolingDirectorySource : récupérer le contenu des fichiers de log dans un
répertoire,
Principaux types de Channels :
• FileChannel : persister les logs sur le file system,
• MemoryChannel : garder les logs en mémoire pour favoriser la performance,
• JDBCChannel : utiliser une base de données comme solution de transit,
Principaux types de sinks :
• HDFSSink : écrire dans HDFS ou S3,
• HBaseSink, ElasticSearchSink, base NoSQL (Cassandra, MongoDB, etc.), 68
• AvroSink : rediriger les logs au format Avro sur un port TCP distant,
• FileRollSink : écrire dans le filesystem local.
34
20/01/2025
Apache Flume
Options
• Il est possible d’implémenter les interfaces Java dédiées, et de 69
déclarer ces classes dans le fichier de configuration Flume.
Apache Flume
Points forts
• Flume NG est intégré à la plupart des distributions Hadoop
open source ou commerciales : Cloudera, HortonWorks, MapR
ou encore Greenplum,
• C’est une solution très simple à installer, configurer et
exploiter,
• L’architecture applicative et les interfaces Java fournies
permettent d’étendre les capacités fonctionnelles de Flume
pour l’intégrer avec n’importe quelle solution
• La possibilité de greffer des intercepteurs permet d’utiliser
Flume comme un ETL en flux,
• Le caractère distribué de la solution permet d’atteindre un bon
niveau de performance et de scalabilité. 70
35
20/01/2025
Apache Flume
Points faibles
• Flume est lent en écriture sur disque,
• La mémoire devient vite un goulet d’étranglement dans le cas
où vous privilégiez le stockage mémoire plutôt que disque
pour des raisons de performance,
• Il n’est pas possible de détecter l’ajout d’un nouveau nœud
dans la topologie,
• Toutes les fonctionnalités de Flume OG n’ont pas été
reportées dans Flume NG. 71
72
36
20/01/2025
Apache Kafka
• Kafka est un système de messagerie distribué, partitionné,
répliqué et basé sur ZooKeeper*. Il prend en charge des multi-
souscripteurs et a été développé à l'origine par Linkedin.
• Kafka peut persister les messages dans un temps de
complexité O(1), et peut maintenir les performances d'accès
aux données en temps constant même face à des téraoctets
de données.
73
Apache Kafka
Architecture
74
37
20/01/2025
Apache Kafka
Haute disponibilité
75
Apache Kafka
Concepts de base de Kafka
• Broker : Un cluster Kafka contient une ou plusieurs instances de service, appelées "brokers"
• Topic : Chaque message publié dans le cluster Kafka a une catégorie, appelée Topic
• Partition : Kafka divise un sujet en une ou plusieurs partitions. Chaque partition correspond physiquement
à un répertoire où sont stockés tous les messages de la partition
• Producteur : envoie des messages aux Brokers Kafka
• Consommateur : consomme les messages et fonctionne comme un client pour lire les messages des
Brokers Kafka
• Groupe de consommateurs : Chaque consommateur appartient à un groupe de consommateurs donné
• Réplication : fait référence à une réplication d'une partition, qui garantit la haute disponibilité des
partitions
• Leader : C’est un rôle pour une réplication. Les producteurs et les consommateurs n'interagissent qu'avec
le leader
76
• Follower : C’est un rôle pour une réplication, qui copie les données du leader
• Contrôleur : un serveur dans un cluster Kafka, qui est utilisé pour l'élection du leader et les basculements
38
20/01/2025
Apache Kafka
Rôle de Zookeeper
• Élection du contrôleur. Le contrôleur est le broker responsable du maintien de la relation
leader/follower pour toutes les partitions. Si un nœud s'arrête, ZooKeeper s'assure que d'autres
répliques prennent le rôle de leaders de partition en remplaçant les leaders de partition du nœud
qui s'arrête.
• Appartenance au cluster. ZooKeeper conserve une liste de tous les brokers en fonctionnement
dans le cluster.
• Configuration des Topics. ZooKeeper maintient la configuration de tous les Topics, le nombre de
partitions pour chaque Topic, l'emplacement des réplications, le nœud leader préféré.
• Listes de contrôle d'accès (ACL). ZooKeeper maintient également les listes de contrôle d'accès
(ACL) pour tous les Topics. Cela inclut qui ou quoi est autorisé à lire/écrire sur chaque Topic, la
liste des groupes de consommateurs, les membres des groupes, et le plus récent offset que
chaque groupe de consommateurs a reçu de chaque partition.
• Quotas: ZooKeeper contrôle la quantité de données que chaque client est autorisé à lire/écrire. 77
78
39
20/01/2025
Apache Sqoop
Le nom Sqoop est un mot valise constitué de sql et de hadoop
79
Apache Sqoop
Avantages
• Ingestion en parallèle via mapreduce*
• Possibilité d’ingestion des nouveaux records seulement
• Possibilité d’ingestion d’une partie des données d’une table
via une requête
80
40
20/01/2025
Apache Sqoop
81
82
41
20/01/2025
Apache Spark
Présentation
• Apache Spark est un moteur de traitement de données rapide dédié au
big data. Il permet de traiter de gros volumes de données de manière
distribuée (cluster computing).
• Avantages : Rapidité, facilité d’utilisation, polyvalence.
• Prend en charge le traitement en mémoire augmente les
performances des applications analytiques Big Data.
• Peut également être utilisé pour le traitement conventionnel sur
disque si les ensembles de données sont trop volumineux pour la
mémoire système.
• Utilisé pour traiter les données du système de fichiers distribués 83
Hadoop, des bases de données NoSQL ou des magasins de données
relationnelles comme Apache Hive.
Apache Spark
Historique
• 2009 : création au sein du laboratoire AMPLab de l'Université de Berkeley
par Matei Zaharia,
• 2010 : lancement en open source sous licence BSD,
• 2013 : confié à l'Apache Software Foundation,
• 2014 : placé au rang de Projet Top-Level par la fondation Apache.
84
42
20/01/2025
Apache Spark
Spark Vs Hadoop
• Hadoop : solution de choix pour le traitement de gros
volumes de données et pour les calculs "one-pass"
(MapReduce),
• Spark : plus pratique pour les cas d'usage nécessitant des
calculs multi-passes (machine learning),
• Il serait préférable de les utiliser ensemble,
• Spark peut être exécuté sur des clusters Hadoop 2 basés
sur le gestionnaire de ressources YARN
85
Apache Spark
86
43
20/01/2025
Apache Spark
Modèle de données Spark : Resilient Distributed Datasets (RDDs)
• Un RDD est une collection calculé à partir de données
87
Apache Spark
Catalyst and Tungsten
• Catalyst est le nom de l'optimiseur de flux de travail de Spark. Créé à l'origine
pour [[SparkSQL]], Catalyst est également utilisé dans les Datasets et les
Dataframes. Son rôle est de réécrire le plan d'exécution d'une requête (ou un
workflow d'exécution) afin d'obtenir un maximum de performances.
• Tungsten Project vise à améliorer les performances de Spark notamment
88
l'optimisation des structures de données utilisées.
44
20/01/2025
Apache Spark
RDD Vs DataFrame : Performance
89
Récapitulatif de l’écosystème
90
45