Vous êtes sur la page 1sur 42

UNIVERSITY MOHAMMED V

FACULTÉ DES SCIENCES RABAT

Projet BIG DATA

Master Informatique et Télécommunication

Option : Génie Logiciel

MIT

Big Data Et Le Systeme Hadoop

Encadrer par :
-Mr Mohammed El haziti
Realiser Par :
-Houda El Mohamadi -Youssef Lakrad
-Sami Belattar -Ayoub Fraidi

Année Universitaire 2022-2023


Résumer

Le terme BIG DATA désigne un domaine qui permet de collecter, stocker et analyser de grandes
quantités de données pour prendre des décisions informées et améliorer les opérations et les stratégies.
Il est utilisé dans de nombreux secteurs. Il est généralement géré à l’aide de systèmes tels que Hadoop
qui est un outil clé pour gérer efficacement ces données en temps réel, il est open-source, distribué et
évolutif. Il permet également de scaler facilement pour gérer des quantités de données massives et de
stocker des données non structurées. Il est souvent utilisé en conjonction avec d’autres outils tels que
Hive, Pig, et Spark pour faciliter l’analyse et le traitement des données. Peuvent également utiliser des
outils de machine learning (apprentissage automatque) tels que Mahout et des outils de visualisation
tels que Tableau pour représenter les données sous forme d’un modèle de manière claire et intuitive.
Cependant, il y a des enjeux importants liés à la gestion, la sécurité et la protection de la vie privée
des données qui doivent être pris en compte pour garantir une utilisation éthique et responsable des
données. En somme, le système Hadoop joue un rôle très important dans la gestion et l’analyse des
données de Big Data , et est utilisé conjointement avec d’autres outils pour maximiser les avantages
pour les entreprises.

Les mots clès : Le Big Data, Les donnés, Hadoop, Les outils Hadoop, Machine learning

2
TABLE DES MATIÈRES

Introduction Générale 6

1 BIG DATA ET SON INGESTION 7


1.1 Big Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1.1 Les types de big data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1.2 Les caracteristiques de big data . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1.3 Le Cluster en big data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2 Ingestion de Big Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3 Les approches d’ingestion de big data . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.1 Big Data en streaming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.2 Big Data en batch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4 les utilisations du Big Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.5 Les enjeux de big data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.6 Outils d’analyse de big data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2 LE SYSTEME HADOOP 13
2.1 Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2 L’écosystème Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3 HDFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.1 Définition HDFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.2 L’architecture de HDFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.2.1 NameNode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.2.2 DataNode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.2.3 Secondry NameNode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.3 Fonctionnement de HDFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4 MapReduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.2 La structure de MapReduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5 YARN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5.2 L’architecture de YARN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5.3 Le Processus de fonctionnemnent de YARN . . . . . . . . . . . . . . . . . . . . 18

3 Traitement de données SQL 19


3.1 Sqoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1.2 Fonctionnement du sqoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 Hive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3
3.2.1 Définition de Hive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2.2 L’infrastructure HIVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2.3 Processus de fonctionnement Hive . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3 Pig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.2 L’infrastrcture Pig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.3 Fonctionnement du PIG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

4 Traitement de données NoSQL 24


4.1 HBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.1.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.1.2 Architecture de HBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.2 MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.2.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.2.2 Architecture MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

5 Gestion, Cordination et PLanification 27


5.1 Apache Flume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.1.1 Définiton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.1.2 Architecture Flume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.2 Zookeper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.2.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.2.2 Architecture de zookeeper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.3 Oozie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.3.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.3.2 Déroulement de Oozie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

6 Machine Learning et Hadoop 31


6.1 Role de machine learning en hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
6.2 Apache spark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
6.2.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
6.2.2 Achitecture de spark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
6.3 Apache Mahout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.3.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.3.2 Architecture Apache Mahout . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

7 Visualisation Des Données 35


7.1 Visualisation Hue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.1.1 Définiton Hue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.1.2 Caractéristique Hue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.1.3 Composantes HUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.2 Visualisation D3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

8 APPLICATION HADOOP 38
8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
8.2 Base de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
8.3 Implementation des résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
8.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Conclusion Générale 41

4
TABLE DES FIGURES

1 Le BIG DATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.1 Les types de BIG DATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8


1.2 Les 5V du big data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3 Fonctionnement de BIG DATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4 Approches d’ingestions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.5 les utilité big data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.6 Caption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.1 Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2 L’écosystème Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3 Architecture HDFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 L’architecture de MapReduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5 Hadoop YARN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.6 Architecture YARN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.1 Sqoop Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20


3.2 Hive Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.3 L’architecture HIVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.1 Architecture HBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

5.1 Apache Flume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28


5.2 Architecture de apache flume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.3 Architecture Zookeeper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

6.1 Architecture Apache Spark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33


6.2 Architecture Apache-Mahout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

7.1 Interface HUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36


7.2 Composante Hue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

8.1 Dataset après le pre-processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

5
Introduction Générale

Aujourd’hui, le Big Data attire beaucoup d’attention dans le monde informatique. L’essor rapide
d’Internet et de l’économie numérique a alimenté une croissance exponentielle de la demande de sto-
ckage et d’analyse de données, et le service informatique est confronté à un énorme défi pour protéger
et analyser ces volumes accrus d’informations. La raison pour laquelle les organisations collectent et
stockent plus de données que jamais auparavant est que leur activité en dépend. Le type d’informa-
tions créées n’est plus des données traditionnelles basées sur une base de données appelées données
structurées, mais plutôt des données qui incluent des documents, des images, de l’audio, de la vidéo et
du contenu de médias sociaux connus sous le nom de données non structurées ou Big Data.

Il n’y a aucun endroit où le Big Data n’existe pas. Selon Forbes, chaque minute, les utilisateurs
regardent 4,15 millions de vidéos sur YouTube, envoient 456 000 tweets sur Twitter, publient 46 740
photos sur Instagram et 510 000 commentaires et 293 000 statuts sont mis à jour sur Facebook ! Imagi-
nez seulement l’énorme quantité de données produites par de telles activités. Cette création constante
de données à l’aide des médias sociaux, des applications commerciales, des télécommunications et de
divers autres domaines conduit à la formation de Big Data.

Figure 1 – Le BIG DATA

L’objectif de notre projet a pour but de savoir plus des connaissances à propos le big data. Plus
précisément d’étudier le système Hadoop et comprendre plus profondément son écosystème, c’est-à-
dire leur fonctionnement et comment ses outils principaux fonctionnent aussi le structuré des outils
complémentaires, ainsi que sa liaison avec la machine learning.

Premièrement nous allons presenter une vue générale de big data (les types, les caractéristiques...).
Dans le deuxième chapitre nous allons entamer le système Hadoop qui est l’élément principal dans ce
projet. Et nous allons finir notre rapport par une implementation pour visualiser les résultats en temps
réel.

6
CHAPITRE 1
BIG DATA ET SON INGESTION

7
1.1 Big Data
Le Big Data (Le méga données) Analytics reflète les défis des données qui sont trop vastes, trop
non structurées et trop rapides pour être gérées par des méthodes traditionnelles. Des entreprises et
des instituts de recherche aux gouvernements, les organisations génèrent désormais régulièrement des
données d’une portée et d’une complexité sans précédent Tout d’abord, il est important de spécifier
que le Big Data n’a pas une définition arrêtée. De nombreuses variantes de descriptions sont retrouvées
mais, bien sûr, elles sont similaires et renferment les mêmes concepts. le Big Data est une méthodologie
caractérisé par une explosion des données, qui peuvent contenir des opportunités qu’on peut saisir,
non pas à l’aide d’approches technologiques traditionnelles, mais à l’aide d’approches technologiques
innovantes. Il consiste de traité les information non structurée a grande vitesse.

1.1.1 Les types de big data


Le Big Data englobe trois types de données : les données structurées, semi-structurées et non
structurées. Chaque type comprend de nombreuses informations utiles que vous pouvez extraire afin
de les utiliser dans différents projets.

Figure 1.1 – Les types de BIG DATA

- Les données structurées : ont un format déterminé et sont souvent numériques. Dans la
majorité des cas, ils sont traités par des machines au lieu des humains. Ce type de données
est composé d’informations déjà organisées en bases de données et en tableurs stockés dans des
bases de données SQL, des data lakes et des entrepôts..

- Les données semi-structurées :contiennent les deux types de données précédents, comme
c’est le cas pour les journaux de serveur web où les données des capteurs que vous avez configurés.
Bien que ces données n’aient pas été classées dans un dépôt (base de données) particulier, elles
contiennent des informations essentielles ou des balises séparant les différents éléments au sein
des données.

- Les données non structurées : est de l’information qui n’est pas organisée et dont le format
n’est pas prédéterminé, puisqu’elle peut être presque n’importe quoi. Les données recueillies à
partir des réseaux sociaux, par exemple, sont des données non structurées. Ceux-ci peuvent être
placés dans des fichiers texte stockés dans des clusters Hadoop ou des systèmes NoSQL.

1.1.2 Les caracteristiques de big data


Le big data se caracterise par les 5V font référence à cinq éléments clés à prendre en compte et
à optimiser dans le cadre d’une démarche d’optimisation de la gestion du big data. Ces 5V sont le
volume la variété la vitesse la valeur la véracité.

8
Figure 1.2 – Les 5V du big data

— La variéte : Les données peuvent prendre des formes très variées et très hétérogènes (voix,
données faciales, données transactionnelles, web analytics, textes, images, etc.)
— La veracité : Fait référence à l’exactitude des données. Vous devez toujours vérifier vos données
et vous assurer que vous disposez de suffisamment de données exactes pour obtenir des résultats
valides et significatifs.
— Le volume : Comme son nom l’indique, le Big Data consiste en de grandes quantités de
données. Il peut s’agir de données de valeur inconnue, telles que des données de clics pour des
pages Web ou des applications mobiles.
— La vitesse : est le grand V qui représente la rapidité de la réception et du traitement des
donnés.
— La valeur : Il est important de connaître la valeur des données dont vous disposez. Vous devrez
également mettre en place des moyens de nettoyer vos données et de vous assurer qu’elles sont
pertinentes pour vos objectifs.

1.1.3 Le Cluster en big data


Un cluster en Big Data est un ensemble de machines qui travaillent ensemble pour stocker et traiter
des données massives de manière distribuée. Il se compose généralement de plusieurs nœuds de calcul,
chacun ayant sa propre mémoire et son propre stockage, ainsi que d’un ou plusieurs nœuds de master
qui gèrent la coordination et la distribution des tâches.
Les clusters Big Data sont souvent utilisés pour stocker et traiter des données en utilisant des
systèmes distribués tels que Hadoop et Apache Spark. Ces systèmes utilisent des protocoles de com-
munication pour distribuer les tâches de traitement sur les nœuds de calcul, de sorte que les données
peuvent être traitées plus rapidement et à moindre coût qu’avec des systèmes traditionnels.

Le noeud master :
Le noeud master est un nœud qui joue un rôle de contrôleur pour les autres nœuds dans le cluster.
Il est responsable de la gestion des ressources, de la planification des tâches et de la distribution des
données.
le nœud maître (master) est un composant critique pour le bon fonctionnement du
système, si il tombe en panne, il peut causer des perturbations dans les tâches de gestion
de données. Pour éviter cela, plusieurs solutions de secours sont disponibles pour prendre
en charge les tâches de gestion de données en cas de panne de nœud maître.

1.2 Ingestion de Big Data


L’ingestion de Big Data est le processus d’importation des données massives à partir des sources
variées vers un système de stockage distribués (Hdfs...). l’ingestion de Big Data commence par identifier
et hiérarchiser les sources de données, valider chaque source et acheminer les éléments de données vers
la bonne destination.

9
Figure 1.3 – Fonctionnement de BIG DATA

L’idée principale du Big Data, c’est que plus vous avez d’informations sur un sujet, plus vous pouvez
en tirer des données qui vous permettront de prendre une décision ou de trouver une solution. Dans
la plupart des cas, ce processus est entièrement automatisé. L’ingestion big data dépond de quelques
paramètres qui varient pour chaque source de données :
- Vitesse des données.
- Taille des données.
- Variance des sources de données.
- Fréquence des données (Batch, micro-batch, streaming...)

1.3 Les approches d’ingestion de big data


Il existe deux approches en generale d’ingestion des données massive Ingetion en batch et In-
gestion en stream. Nous allons le voire dans la partie suivante de manière plus définie.

Figure 1.4 – Approches d’ingestions

1.3.1 Big Data en streaming


Ingestion en Streaming (En temps réel) est le processus de collecter, traiter et stocker des données
massives, en utilisant des technologie de streaming comme HTTP-Live streaming(HLS), Real-time
Messaging Protocol(RTMP) et WebSockets. Les données sont generalement collectées en continu à
partir de différentes sources, telles que les capteurs, les appareils connectés, les réseaux sociaux et les
bases de données. Ces données sont ensuite traitées en temps réel pour en extraire des informations
utiles, par exemple en utilisant des algorithmes de traitement en temps réel ou des modèles de machine

10
learning. Les résultats de ces traitements sont ensuite stockés pour une utilisation ultérieure, par
exemple pour l’analyse ou l’affichage en temps réel.

1.3.2 Big Data en batch


L’ingestion de Big Data en batch est le processus de collecter, de stocker et de traiter les données en
grande quantité en utilisant des technologies de traitement par lots tels que Apache Hive, Apache Pig,
Apache Spark, Apache Storm, pour en extraire des informations utiles. Les données sont généralement
collectées périodiquement à partir de différentes sources, telles que les capteurs, les appareils connectés,
les réseaux sociaux et les bases de données. Ces données sont ensuite stockées dans un dépôt de données,
comme un système de stockage distribué tel qu’Hadoop HDFS ou un système de base de données.

l’ingestion de données en batch est généralement plus lente que l’ingestion de données
en temps réel, car les données doivent être collectées, stockées et traitées en séquence.
Cependant, il peut être utilisé pour les tâches de traitement de données qui nécessitent
une précision élevée et pour les tâches qui ont des exigences de stockage à long terme.

1.4 les utilisations du Big Data


Le Big Data permet d’analyser et d’évaluer tout type de production humaine et les feedbacks
clients. Le Big Data peut être utilisé pour améliorer la prise de décision, qui sont énormes :

- La météorologie etl’adaptation du changement climatique.


- la maintenance prédictive dans le milieu aéronautique.
- L’exploitation de données, une technique de fidélisation pour les banques et les assurances.
- Détéction des fraudes.
- La sécurisation des accèes.

Figure 1.5 – les utilité big data

1.5 Les enjeux de big data


Les enjeux de Big Data sont devenus de plus en plus importants à mesure que les entreprises col-
lectent et stockent de plus grandes quantités de données. Les données permettent aux entreprises de
prendre des décisions informées, d’optimiser les opérations et les stratégies, et d’automatiser les proces-
sus. Sont multiples et varient selon les secteurs d’application. Certains des enjeux les plus importants
incluent :
- Stockage et analyse des données : les entreprises doivent être en mesure de stocker et de
traiter de grandes quantités de données, ce qui peut être coûteux et complexe.

11
- Sécurité des données : les entreprises doivent protéger les données sensibles contre les fuites,
les vols et les cyberattaques.
- Respect de la vie privée : les entreprises doivent respecter les lois et les règlementations
relatives à la vie privée des individus, telles que le RGPD en Europe.
- Prise de décision : les entreprises peuvent utiliser les données pour prendre des décisions
informées et améliorer les opérations et les stratégies.
- Automatisation des processus : les entreprises peuvent utiliser les données pour automatiser
les processus, tels que la surveillance des performances et la détection des anomalies.

1.6 Outils d’analyse de big data


L’analyse de Big Data consiste à extraire des informations significatives à partir de grandes quantités
de données. Cela implique l’utilisation d’outils et de techniques d’analyse pour identifier des modèles,
des tendances, des corrélations et des insights à partir des données.
Il existe de multiples outils pour traiter les Big Data tels que Hadoop, Pig, Hive, Oozie, Spark, etc.
en fonction des besoins de l’organisation.

Figure 1.6 – Caption

Le Big Data est un concept important, qui s’applique à des données qui ne sont pas conformes à la
structure normale de la base de données traditionnelle. Le Big Data se compose de différents types de
technologies clés telles que Hadoop, HDFS, NoSQL, MapReduce, MongoDB, HIVE... que nous allons
entamer dans le chapitre suivante et qui fonctionnent ensemble pour atteindre l’objectif final

12
CHAPITRE 2
LE SYSTEME HADOOP

13
2.1 Hadoop
La mise en œuvre d’un projet Big Data nécessite le choix d’une méthode de stockage, d’une techno-
logie d’exploitation et des outils d’analyse de données. Pour optimiser les temps de traitement sur des
bases de données volumineuses, une panoplie de solutions existe. Dans ce chapitre nous allons entamer
l’un des solution open source c’est hadoop.
Hadoop est un framework libre et open source en JAVA utilisé pour le stockage et traitement des
big data et permettant aux application de fonctionner avec des millier noeuds des données de different
types. Les données sont stockées sur des serveurs standard peu coûteux configurés en clusters.

Figure 2.1 – Hadoop

L’objectife globale de hadoop est de résoudre les deux principaux problèmes de la manipulation de
grandes quantités des données :
- Stockage des données (limitation de la tailles du disque durs).
- Recherche rapide dans les données (Limitation de la puissance de calcule).

2.2 L’écosystème Hadoop


Hadoop n’est ni un langage de programmation ni un service, c’est un plateforme qui résoudre
les problèmes de big data. Nous pouvons le considerer comme un enveloppe qui englobe les elements
permettant le stockage, la gestion, le traitement des données distribuées. L’ensemble de ces élements
forme l’écosystème hadoop.

Figure 2.2 – L’écosystème Hadoop

L’écosystème hadoop comporte des elements de base indispensables au framework, et d’autres sont
des éléments complementaire qui ajoutent des fonctionnalités

14
2.3 HDFS
2.3.1 Définition HDFS
HDFS (Hadoop Distributed File System) est un système de fichiers distribué conçu pour stocker
des quantités massives de données de manière efficace et tolérant aux pannes. Il permet de stocker
des fichiers de grande taille en les découpant en plusieurs morceaux appelés blocs, qui sont ensuite
répartis sur différents nœuds d’un cluster. Il prend en charge la réplication des données pour assurer
la disponibilité et la tolérance aux pannes. Il permet également aux utilisateurs de traiter les données
directement sur le système de fichiers plutôt que de les charger dans un système de base de données.

2.3.2 L’architecture de HDFS


L’architecture HDFS (Hadoop Distributed File System) est composée de deux types de nœuds : les
nœuds de données (DataNode ou esclaves) et les nœuds de nom (NameNode ou maîtres).
Il existe également un composant supplémentaire appelé SecondaryNameNode qui aide le Name-
Node en prenant des copies de sa mémoire tampon pour éviter la perte de données en cas de crash.

Figure 2.3 – Architecture HDFS

2.3.2.1 NameNode
Namenode est le nœud maître dans l’architecture HDFS. Il est responsable de la gestion des noms
de fichiers et de la mappage des noms de fichiers aux blocs de données stockés sur les nœuds de données.
Il maintient également une liste des nœuds de données qui stockent chaque bloc de données. Il gère les
opérations de lecture et d’écriture des données sur HDFS, et il est responsable de la répartition des
tâches de lecture et d’écriture sur les différents nœuds de données. Il est également responsable de la
gestion de la réplication des données pour assurer la tolérance aux pannes. Il est le point central de
gestion et de coordination pour toutes les opérations dans le système HDFS.

2.3.2.2 DataNode
DataNode est un nœud esclave qui stock physiquement les données sur le disque, il stocke les
données sous forme de blocs de taille fixe, il est également responsable de la lecture et de l’écriture des
données sur HDFS, de la gestion de la réplication des données pour assurer la tolérance aux pannes
et la gestion de l’espace disque en supprimant les blocs de données qui ne sont plus nécessaires. Il
communique régulièrement avec Namenode pour signaler la disponibilité des blocs de données qu’il
stocke et pour recevoir des instructions sur les opérations de lecture et d’écriture. Il est un composant
fondamentale pour garantir la disponibilité et la tolérance aux pannes dans HDFS.

15
2.3.2.3 Secondry NameNode
SecondaryNameNode, a pour rôle de maintenir une copie de la mémoire tampon du NameNode
principal, cela permet de limiter les risques de perte de données en cas de panne du NameNode principal.
Il exécute également des tâches de maintenance telles que la fusion des journaux de transactions pour
éviter que la mémoire tampon du NameNode principal ne devienne trop volumineuse.
SecondaryNameNode ne remplace pas le NameNode principal et n’est pas utilisé pour
gérer les opérations de lecture et d’écriture des données. Il est utilisé uniquement pour des
tâches de maintenance et de sauvegarde de la mémoire tampon du NameNode principal.

2.3.3 Fonctionnement de HDFS


HDFS (Hadoop Distributed File System) est un système de fichiers distribué conçu pour gérer de
grandes quantités de données sur des clusters de nœuds. Ainsi qu’il focntionne de la maniere suivante :
- Les données sont divisées en blocs de taille fixe (généralement de 64 Mo ou 128 Mo) et stockées
sur différents nœuds du cluster.
- Chaque bloc est stocké sur plusieurs nœuds pour assurer la tolérance aux pannes.
- Lorsque des données sont ajoutées à HDFS, elles sont d’abord écrites sur un nœud de stockage
local (appelé nœud d’écriture), puis repliquées sur d’autres nœuds (appelés nœuds de stockage
secondaires) pour assurer la redondance.
- Les utilisateurs peuvent accéder aux données stockées sur HDFS via le système de fichiers HDFS,
qui est accessible via une interface de commande ou via des bibliothèques pour des programmes
tels que MapReduce.
- Lorsque des données sont lues à partir de HDFS, le système trouve automatiquement la copie
la plus proche pour réduire la latence.
- HDFS gère également la répartition des charges et les mises à jour de données pour éviter les
conflits et assurer l’intégrité des données.

2.4 MapReduce
2.4.1 Définition
MapReduce est un modèle de programmation distribué pour traiter des grandes quantités de don-
nées. Il est utilisé pour effectuer des calculs parallèles sur des clusters de nœuds.
MapReduce est souvent utilisé en conjonction avec HDFS pour stocker et traiter des données
massives de manière efficace. Il est également utilisé avec des systèmes de gestion de données distribuées
tels que Hadoop pour faciliter le traitement parallèle de big data.

2.4.2 La structure de MapReduce


La structure de MapReduce se comporte deux étapes principales : le "Map" et le "Reduce".
Map : Elle est utilisée pour traiter les données d’entrée et les transformer en un ensemble de
données intermédiaires sous forme de clés-valeurs. Cette étape peut être utilisée pour filtrer les données,
les transformer ou les regrouper.
Reduce : Elle est utilisée pour combiner les données produites par le "Map" pour produire des
résultats finaux. Cette étape peut être utilisée pour effectuer des calculs tels que des agrégations, des
calculs statistiques ou des calculs de similarité.
Les étapes de "Map" et "Reduce" sont exécutées en parallèle sur des nœuds diffé-
rents du cluster pour optimiser les performances. Les données d’entrée sont également
partitionnées et réparties sur plusieurs nœuds pour traitement parallèle.

16
Figure 2.4 – L’architecture de MapReduce

Entre le Mapping et le Reduce il existe une étape qui s’appelle Combine et Partition.
- Combine : est un processus facultatif. Un Combiner est en fait un Reducer complémentaire
qui fonctionne séparément sur chaque serveur Mapper. Le Reducer poursuit la réduction des
données de chaque Mapper sous une forme simplifiée avant de les transmettre en aval – ce qui
facilite et accélère les opérations de mélange et le tri, dans la mesure où le volume de données
à traiter a été réduit.
- Partition : est le processus qui traduit les paires <key, value> générées par les Mappers
en d’autres paires <key, value> qui sont injectées dans le Reducer. Le Partitioner par défaut
détermine la valeur de hachage de clé transmis par le Mapper et assigne une partition en fonction
de cette valeur. Il y a autant de partitions que de Reducers. Lorsque le partitionnement est
terminé, les données de chaque partition sont transmises à un Reducer donné.

2.5 YARN
2.5.1 Définition
YARN (yet another resources negotiator) est un système de gestion de ressource distibuer qui
permet de gérer des applications distribuées sur un cluster Hadoop. Il permet de gérer les ressources
(processeur, mémoire, espace disque) de manière efficace pour les différentes applications qui s’exé-
cutent sur le cluster. Il permet differentes méthodes de traitement de données telles que le traitement
graphique, le traitement de flus ainsi que le traitement par lots pour executé et traités les données
stockés dans HDFS.

Figure 2.5 – Hadoop YARN

2.5.2 L’architecture de YARN


L’architecture de YARN comporte principalement deux composants principaux : le ResourceMa-
nager et les NodeManagers.
- RessourceManager : C’est le composant maître qui gère les ressources du cluster et les assigne
aux applications en cours d’exécution. Il est responsable de la planification des tâches, de la
gestion des priorités des applications et de la surveillance des performances. Il fournit également
une interface pour les utilisateurs et les administrateurs pour soumettre des applications et
suivre leur progression.

17
- NodeManager : C’est le composant esclave qui s’exécute sur chaque nœud du cluster et est
responsable de l’exécution des tâches et de la surveillance des ressources (mémoire, processeur,
espace disque) sur chaque nœud. Il envoie des rapports d’état au ResourceManager pour lui
permettre de prendre des décisions en matière d’allocation de ressources.
- ApplicationMaster : Il est un composant logiciel qui est lancé pour chaque application pour
gérer les tâches de cette application. Il est responsable de demander des ressources au Resour-
ceManager, de planifier les tâches à exécuter sur les NodeManagers et de surveiller l’exécution
des tâches.
- Container : Il est un environnement d’exécution qui est alloué par le ResourceManager pour une
application via l’ApplicationMaster. Il contient les ressources (mémoire, CPU, espace disque)
allouées pour une tâche d’application donnée.

Figure 2.6 – Architecture YARN

2.5.3 Le Processus de fonctionnemnent de YARN


Le fonctionnement de YARN est basé sur une architecture maître-esclave, se faite généralement en
plusieurs étapes :
- Soumission d’une application : un utilisateur soumet une application à YARN via une
interface utilisateur ou un scripts.
- Allocation des ressources : le ResourceManager planifie les ressources (mémoire, processeur,
espace disque) nécessaires pour l’application et les alloue à l’ApplicationMaster.
- Planification des taches : l’ApplicationMaster planifie les tâches à exécuter sur les différents
nœuds du cluster et envoie des demandes de ressources aux NodeManagers.
- Execution des taches : les NodeManagers exécutent les tâches sur les nœuds du cluster et
surveillent les ressources utilisées.
- Surveillance de l’execution : l’ApplicationMaster et le ResourceManager surveillent l’exé-
cution des tâches et ajustent les ressources allouées en conséquence.
- la recupération des résultats : une fois que toutes les tâches sont terminées, les résultats
sont collectés et retournés à l’utilisateur.

18
CHAPITRE 3
TRAITEMENT DE DONNÉES SQL

19
3.1 Sqoop
3.1.1 Définition
Sqoop est un outil open-source très utilisé pour intégrer des données dans des environnements Big
Data, qui permet de transférer des données entre des systèmes Hadoop et des bases de données rela-
tionnelles (RDBMS) tels que MySQL, Oracle, et PostgreSQL. Il permet aux utilisateurs de transférer
des données entre Hadoop et les bases de données relationnelles, ainsi que d’importer et d’exporter
des données en utilisant des commandes en ligne simples. Il supporte également la parallélisation des
imports et exports pour accélérer les transferts de données.

3.1.2 Fonctionnement du sqoop


Sqoop est un outil qui permet de transférer des données entre des systèmes Hadoop et des bases
de données relationnelles en utilisant des commandes en ligne simples.

Figure 3.1 – Sqoop Hadoop

Nous allons que le processus de fonctionnement de Sqoop se déroule en plusieurs étapes :


- Connexion à la base de données : Sqoop se connecte à la base de données source en utilisant
les informations de connexion fournies, comme l’adresse du serveur, le nom d’utilisateur et le
mot de passe.
- Import ou Export : Sqoop peut être utilisé pour importer des données de la base de données
dans Hadoop ou pour exporter des données de Hadoop vers la base de données.
- Exécution de la commande : une fois que toutes les options ont été définies, l’utilisateur
peut exécuter la commande d’import ou d’export.
- Traitement des données : Les données sont transférées entre la base de données et Hadoop
en utilisant le modèle de MapReduce de Hadoop, qui permet de traiter les données de manière
parallèle et de gérer les erreurs.
- Stockage des données : une fois les données transférées, elles sont stockées dans le système
de fichiers distribué (HDFS) de Hadoop.
- Interrogation des données : les données importées peuvent être utilisées pour alimenter des
outils d’analyse tels que Hive, Pig, et Spark pour interroger les données.
Sqoop et Hive sont des outils open-source qui sont utilisés pour gérer les données dans
les systèmes Hadoop, mais ils ont des fonctionnalités et des utilisations différentes. Sqoop
est principalement utilisé pour transférer des données entre les systèmes Hadoop et les
bases de données relationnelles, tandis que Hive est principalement utilisé pour analyser
les données stockées dans Hadoop en utilisant des requêtes SQL-like. Les deux outils sont
souvent utilisés ensemble pour intégrer des données dans des environnements Big Data.

20
3.2 Hive
3.2.1 Définition de Hive
Hive est un outil de gestion de données open-source qui permet aux utilisateurs de travailler avec
des données stockées dans HDFS en utilisant une syntaxe SQL familière. Il fournit une interface de
requête pour les utilisateurs qui ne sont pas familiers avec le langage de programmation MapReduce
ou des commandes en ligne et permet de gérer les tables, les partitions, les buckets, les fonctions
incorporées et l’optimisation pour améliorer les performances des requêtes

Figure 3.2 – Hive Hadoop

Hive propose des fonctionnalités avancée telle que :

3.2.2 L’infrastructure HIVE


Hive est basée sur l’architecture de clients-serveur où l’utilisateurs soumettent des requetes a un
serveur Hive qui les exécute sur le cluster Hadoop. Les composantes principaux de l’architecture Hive
sont :
- Interface de requete : Hive fournit une interface de requete pour les utilisateur qui permet
de soumettre des requetes SQL en utilisant une interface utilisateur ou des scripts.
- Seveur Hive : Le serveur Hive est responsable de la gestion des métadonnées et de l’exécution
des requêtes. Il convertit les requêtes SQL en traitement MapReduce pour l’exécution sur le
cluster Hadoop.
- Métastore : Le métastore est un service qui stocke les métadonnées relatives aux tables, aux
partitions et aux autres objets de données gérés par Hive. Il est généralement implémenté en
utilisant une base de données relationnelle pour garantir la persistance des métadonnées.
- HDFS : Hive utilise HDFS comme système de fichiers distribué pour stocker les données.
- Cluster Hadoop : Hive utilise le cluster Hadoop pour exécuter les taches MapReduce générées
par les requetes.

Figure 3.3 – L’architecture HIVE

21
3.2.3 Processus de fonctionnement Hive
Le processus de fonctionnement de Hive consiste à soumettre une requête SQL, analyse la requête,
génère un plan d’exécution, exécute la requête sur le cluster Hadoop, retourne les résultats et met à
jour les métadonnées si la requête modifie les données. generalement le processus hive se deroule selon
les étapes suivante :
- Soumission de la requete : l’utilisateur soumet une requête SQL à l’interface de requête
Hive.
- Analyse de la requete : : Le serveur Hive analyse la requête pour identifier les tables et les
colonnes concernées, vérifie les autorisations d’accès et optimise la requête pour une exécution
efficace.
- Génération de plan d’exécution : Le serveur Hive génère un plan d’exécution pour la
requête en utilisant les informations stockées dans le métastore et en utilisant des techniques
d’optimisation telles que la sélection de la meilleure stratégie d’accès aux données.
- Exécution de la requete : Le serveur Hive envoie les âches MapReduce générées par le plan
d’exécution pour l’exécution sur le cluster Hadoop.
- Retour des résultats : Le serveur Hive retourne les résultats de la requête à l’utilisateur.
- Mis à jours des métadonnées : Si la requete modifier les données, les métadonnées sont mis
a jour dans les métastores.

3.3 Pig
3.3.1 Définition
Apache Pig est un langage de programmation de haut niveau conçu pour l’analyse de données
volumineuses dans Hadoop. Pig permet aux utilisateurs d’écrire des programmes appelés scripts Pig,
qui sont ensuite exécutés sur une infrastructure Hadoop pour effectuer des opérations de traitement
de données.

3.3.2 L’infrastrcture Pig


l’architecture de Pig dans Hadoop se compose de plusieurs composants :
- Le compilateur Pig : qui compile le code Pig en un ensemble de tâches MapReduce.
- Le système de gestion de l’environnement : qui gère l’exécution des tâches MapReduce
générées.
- Le système de stockage de données : qui stocke les données utilisées par Pig, généralement
HDFS (Hadoop Distributed File System).
- Le langage de requête Pig Latin : qui permet aux utilisateurs d’écrire des scripts Pig pour
traiter les données.
- Les opérateurs Pig : qui sont des fonctions intégrées pour le traitement de données, tels que
les opérateurs de filtrage, de tri, de regroupement et de jointure.
- Les fonctions utilisateur : qui permettent aux utilisateurs de définir des fonctions personna-
lisées pour le traitement de données en utilisant le langage de programmation Java.
En résumé, l’architecture de Pig dans Hadoop est basée sur le système de traitement de données
MapReduce. Pig se compose de plusieurs composants tels que le compilateur Pig, le système de gestion
de l’environnement, le système de stockage de données, le langage de requête Pig Latin, les opérateurs
Pig et les fonctions utilisateur.

3.3.3 Fonctionnement du PIG


le fonctionnement de Pig dans l’écosystème Hadoop est basé sur un système de traitement de
données en deux étapes : la compilation et l’exécution. Le langage de requête Pig Latin permet aux
utilisateurs de déclarer ce qu’ils veulent faire avec les données, et le compilateur Pig convertit le code

22
en tâches MapReduce qui sont exécutées sur un cluster Hadoop. Pig fournit également de nombreux
opérateurs intégrés pour le traitement de données et peut être étendu avec des fonctions utilisateur
personnalisées.
- Compilation : Lorsqu’un script Pig est écrit, le compilateur Pig compile le code en un ensemble
de tâches MapReduce. Le code Pig est écrit en utilisant le langage de requête Pig Latin, qui est
un langage de haut niveau pour le traitement de données.
- Exécution : Les tâches MapReduce générées par le compilateur Pig sont ensuite exécutées sur
un cluster Hadoop. Pendant l’exécution, les données sont lues à partir de sources de données
telles que HDFS (Hadoop Distributed File System) ou HBase, et sont traitées en utilisant les
opérateurs Pig. Les résultats peuvent ensuite être stockés dans HDFS ou exportés vers des bases
de données externes.

23
CHAPITRE 4
TRAITEMENT DE DONNÉES NOSQL

24
4.1 HBase
4.1.1 Définition
HBase est une base de données NoSQL distribuée qui est construite sur Apache Hadoop. Elle offre
une haute disponibilité, une tolérance aux pannes et une évolutivité horizontale pour les applications
nécessitant une grande quantité de données en temps réel. HBase stocke les données dans des tables
qui sont divisées en régions qui sont distribuées sur différents nœuds du cluster. Chaque région est
répliquée sur plusieurs nœuds pour assurer la tolérance aux pannes et la disponibilité continue. Les
données dans HBase sont organisées en colonnes plutôt qu’en lignes, ce qui permet une récupération
rapide des données en fonction des critères de recherche.

4.1.2 Architecture de HBase


HBase est une base de données NoSQL distribuée qui est conçue pour gérer des données massives en
temps réel. Elle est construite sur Apache Hadoop et utilise HDFS (Hadoop Distributed File System)
pour stocker les données. Voici les principales composantes de l’architecture de HBase :

Figure 4.1 – Architecture HBase

- RegionServer : chaque nœud du cluster HBase exécute un ou plusieurs RegionServers qui


gèrent les données stockées dans les régions. Les RegionServers sont responsables de la gestion
des données en lecture et en écriture, de la réplication des données et de la gestion des opérations
de maintenance.
- HMaster : HMaster est responsable de la gestion des opérations de gestion de cluster, telles que
la répartition des régions sur les différents nœuds, la gestion des informations de méta-données,
la récupération de données en cas de panne et la gestion des événements de basculement.
- ZooKeeper : ZooKeeper est un service de coordination distribué utilisé par HBase pour la
gestion des nœuds du cluster, la synchronisation des opérations et la détection des pannes.
- HDFS : HBase stocke les données dans HDFS (Hadoop Distributed File System), qui offre une
haute disponibilité, une tolérance aux pannes et une évolutivité horizontale.
- Tables : les données dans HBase sont stockées dans des tables qui sont divisées en régions.
Chaque région est gérée par un RegionServer qui est responsable de la lecture et de l’écriture des
données. Les tables sont conçues pour être hautement évolatives et pour permettre la répartition
horizontale des données.

25
4.2 MongoDB
4.2.1 Définition
MongoDB est une base de données NoSQL orientée documents qui offre une grande flexibilité pour
stocker et gérer des données semi-structurées ou non structurées.MongoDB stocke les données dans des
documents BSON (Binary JSON) qui sont similaires à des objets JSON, mais qui peuvent également
stocker des données binaires. Les documents sont stockés dans des collections, qui sont similaires à des
tables dans les bases de données relationnelles. MongoDB offre une haute disponibilité et une tolérance
aux pannes grâce à la réplication des données sur plusieurs nœuds du cluster.

4.2.2 Architecture MongoDB


Voici les principales composantes de l’architecture de MongoDB :
Cluster : MongoDB est conçu pour fonctionner sur un cluster, qui est constitué de plusieurs nœuds
MongoDB qui exécutent des instances de MongoDB. Les clusters peuvent être configurés en réplication
ou en partitionnement pour fournir des fonctionnalités de disponibilité et d’évolutivité.
Instances : chaque nœud du cluster MongoDB exécute une instance MongoDB, qui est responsable
de la gestion des opérations de lecture et d’écriture, de la gestion des index, de la gestion des connexions
clients, etc.
Base de données : MongoDB peut gérer plusieurs bases de données, chacune contenant un
ensemble de collections de documents. Chaque base de données peut être répliquée ou partionnée
de manière indépendante.
Collection : chaque base de données contient plusieurs collections, qui sont l’équivalent des tables
dans les bases de données relationnelles. Chaque collection contient un ensemble de documents qui
peuvent être de structures différentes.
Document : chaque document est une unité de données stockée dans MongoDB. Les documents
sont stockés en format BSON (Binary JSON), qui est une extension de JSON pour stocker des données
binaires. Les documents peuvent être de structures différentes, avec des champs optionnels et des
valeurs imbriquées.

26
CHAPITRE 5
GESTION, CORDINATION ET
PLANIFICATION

27
5.1 Apache Flume
5.1.1 Définiton
Apache Flume est un outil de collecte, de transport et de chargement de données distribué pour les
systèmes de traitement de données volumineux, tels que Hadoop. Il permet aux utilisateurs de collecter
des données à partir de différentes sources, telles que des fichiers log, des systèmes de messagerie et
des sources de données en temps réel, puis de les acheminer vers un système de stockage de données,
comme HDFS ou HBase.
Flume prend en charge plusieurs protocoles de transport, tels que HTTP, Avro et Thrift, qui
permettent aux utilisateurs de choisir le protocole qui convient le mieux à leur environnement. Il prend
également en charge différents formats de données, tels que les fichiers textes, les fichiers JSON et les
fichiers protobuf.

Figure 5.1 – Apache Flume

5.1.2 Architecture Flume


L’architecture de Apache Flume est basée sur un modèle de pipeline distribué, qui se compose de
trois éléments principaux : les agents Flume, les agents de transit et les agents de destination.
- Les agents Flume sont des programmes qui collectent les données à partir de différentes
sources, telles que des fichiers log, des systèmes de messagerie et des sources de données en
temps réel. Les agents Flume peuvent être déployés sur des nœuds distribués pour gérer les
données en temps réel à grande échelle.
- Les agents de transit sont des programmes qui acheminent les données collectées par les
agents Flume vers les agents de destination. Les agents de transit peuvent être utilisés pour
effectuer des opérations de traitement de données, telles que la compression, l’encryption et la
transformation de données, avant de les envoyer à l’agent de destination.
- Les agents de destination sont des programmes qui chargent les données acheminées par les
agents de transit dans le système de stockage de données. Les agents de destination peuvent
être utilisés pour charger les données dans des systèmes de stockage de données tels que HDFS,
HBase ou Solr.

28
Figure 5.2 – Architecture de apache flume

5.2 Zookeper
5.2.1 Définition
ZooKeeper est un service de coordination distribué open source qui permet de synchroniser et
de gérer les services distribués dans un environnement informatique distribué. ZooKeeper fournit des
primitives de haut niveau pour les opérations de coordination, comme les verrous, les séquences et les
élections de leader, qui permettent de mettre en place des opérations de coordination en toute sécurité.
ZooKeeper est utilisé dans de nombreux projets Apache, notamment Hadoop, Kafka, Storm et Solr

5.2.2 Architecture de zookeeper


L’architecture de ZooKeeper est basée sur le modèle de service de coordination distribué, qui
est composé d’un ensemble de serveurs qui gèrent l’état des services distribués. Voici les principaux
éléments de l’architecture de ZooKeeper.

Figure 5.3 – Architecture Zookeeper

- Serveurs ZooKeeper : Le service ZooKeeper est exécuté sur un ensemble de serveurs qui
forment un quorum. Les serveurs ZooKeeper stockent l’état des services distribués dans un
arbre de données hiérarchique, appelé znode.
- Clients ZooKeeper : Les clients ZooKeeper sont des applications qui accèdent aux services
distribués en utilisant l’API de ZooKeeper. ZooKeeper fonctionne en mode répliqué, ce qui
signifie que les serveurs ZooKeeper se répliquent mutuellement l’état des services distribués en
temps réel.

29
- Mode de fonctionnement : ZooKeeper fonctionne en mode répliqué, ce qui signifie que les
serveurs ZooKeeper se répliquent mutuellement l’état des services distribués en temps réel.
- Élections de leader : Les serveurs ZooKeeper utilisent des élections de leader pour élire un
serveur primaire, qui est responsable de la coordination des opérations de lecture et d’écriture
des clients. Si le leader tombe en panne, les serveurs ZooKeeper organisent une nouvelle élection
pour choisir un nouveau leader.

5.3 Oozie
5.3.1 Définition
Oozie est un système de planification de tâches pour Hadoop. Il permet de planifier, exécuter et
suivre des tâches Hadoop, telles que les tâches MapReduce, Pig, Hive et Sqoop. Oozie est conçu pour
fonctionner avec le système de fichiers distribué HDFS (Hadoop Distributed File System) et peut
également utiliser des données stockées dans d’autres systèmes de fichiers distribués tels que HBase et
Amazon S3.
En utilisant Oozie, les utilisateurs peuvent planifier des tâches pour s’exécuter à des moments
précis, répéter des tâches à des intervalles réguliers, ou déclencher des tâches en fonction de l’arrivée
de nouvelles données. Cela permet aux utilisateurs de créer des workflows de tâches automatisés pour
gérer de manière efficace les données dans un cluster Hadoop.

5.3.2 Déroulement de Oozie


Oozie fonctionne en utilisant un système de définition de workflow pour planifier des tâches Hadoop.
Les utilisateurs définissent des workflows en utilisant un langage de définition de workflow appelé Oozie
Workflow Definition (OWF), qui est basé sur XML. Les workflows peuvent inclure des tâches simples,
telles que des tâches Pig ou Hive, ainsi que des tâches plus complexes, telles que des séquences de
tâches ou des branches conditionnelles.
Une fois qu’un workflow est défini, il est envoyé à Oozie pour exécution. Oozie utilise un mécanisme
de planification pour déterminer quelles tâches doivent s’exécuter et dans quel ordre. Il peut également
déclencher des tâches en fonction de l’arrivée de nouvelles données ou de la réussite ou l’échec d’autres
tâches.
Pendant l’exécution d’un workflow, Oozie surveille les tâches et enregistre leur statut. Les utilisa-
teurs peuvent utiliser l’interface utilisateur web d’Oozie pour suivre l’état des workflows et des tâches
en cours. En cas de problème, Oozie peut envoyer des alertes par courrier électronique ou SMS pour
informer les utilisateurs de l’échec d’une tâche.
Une fois qu’un workflow est terminé, Oozie enregistre les résultats et les met à disposition pour les
utilisateurs. Les utilisateurs peuvent également utiliser Oozie pour planifier des tâches pour s’exécuter
à des moments précis, répéter des tâches à des intervalles réguliers, ou déclencher des tâches en fonction
de l’arrivée de nouvelles données.

30
CHAPITRE 6
MACHINE LEARNING ET HADOOP

31
Le machine learning est un domaine de l’intelligence artificielle qui permet aux ordinateurs d’ap-
prendre à partir de données, sans être explicitement programmés. Il est utilisé pour résoudre de nom-
breux problèmes complexes dans les domaines tels que la reconnaissance de la parole, la vision par
ordinateur, les systèmes de recommandation, la prédiction de données et dans le contexte de Big data.

6.1 Role de machine learning en hadoop


Le rôle du machine learning dans Hadoop est de permettre l’analyse avancée des données stockées
dans le système de fichiers distribué HDFS (Hadoop Distributed File System) dans un cluster Hadoop.
Il permet de construire des modèles de prédiction, de segmenter les clients, de détecter les fraudes,
de comprendre les sentiments des clients, entre autres, en utilisant des techniques d’apprentissage
automatique sur des données volumineuses et distribuées.Il permet également de :
- Utiliser des algorithmes d’apprentissage automatique pour analyser les données stockées dans
Hadoop et découvrir des modèles et des tendances cachés.
- Utiliser des outils tels que Mahout, Spark, H2O, TensorFlowOnSpark, Deeplearning4j pour
intégrer des fonctionnalités de machine learning avec Hadoop pour améliorer les performances
des calculs et des analyses.
- Entraîner des modèles de machine learning sur les données stockées dans Hadoop pour utiliser
ces modèles pour faire des prévisions sur les données entrantes.
- Utiliser les capacités de parallelisme et de distribution de Hadoop pour optimiser les perfor-
mances des calculs de machine learning.
Machine learning et Hadoop est basée sur l’utilisation de Hadoop pour stocker et gérer les données de
grande envergure nécessaires à l’entraînement et à l’utilisation de modèles de machine learning. Tandis
que les outils de machine learning tels que Mahout, Spark sont utilisés pour effectuer des analyses
avancées sur les données stockées dans Hadoop.

6.2 Apache spark


6.2.1 Définition
Apache Spark c’est un projet open-source qui permet d’exécuter des calculs distribués sur des
données stockées dans Hadoop et peut être utilisé pour effectuer des analyses de données et des calculs
de machine learning de manière efficace. Il fournit également un module MLlib pour l’analyse de
données et l’apprentissage automatique.

6.2.2 Achitecture de spark


Apache Spark utilise une architecture en couches, comportant plusieurs composants, dont l’objectif
est de permettre de réaliser des traitements performants tout en promettant un développement et une
intégration facilitées.les composantes principaux sont :
- Core : Il s’agit du coeur du système Spark, qui gère les calculs distribués, la mémoire partagée
et les communications entre les nœuds. Il offre également des fonctionnalités de gestion de la
mémoire pour accélérer les calculs.
- Spark SQL : Il s’agit d’un module qui permet de traiter les données structurées en utilisant
des requêtes SQL et des DataFrames. Il permet également d’intégrer Spark avec des systèmes
de stockage de données tels que Hive, Avro et Parquet.
- Spark Streaming : Il s’agit d’un module qui permet de traiter les données en streaming en
temps réel. Il prend en charge les sources de données telles que Kafka, Flume, Kinesis, et HDFS.
- MLlib : Il s’agit d’un module d’apprentissage automatique qui offre une large gamme d’algo-
rithmes d’apprentissage automatique, tels que les régressions, les arbres de décision, les forêts
aléatoires et les réseaux de neurones, qui peuvent être utilisés pour entraîner des modèles sur
des données distribuées.

32
- GraphX : Il s’agit d’un module qui permet de traiter les données graphiques en utilisant des
techniques de calcul parallèle. Il offre des fonctionnalités pour la création, la transformation et
l’analyse de graphes.
- Cluster Manager : Il gère la mise en place, la configuration et le déploiement des applications
Spark sur un cluster. Il prend en charge plusieurs gestionnaires de cluster tels que YARN, Mesos
et Kubernetes.

Figure 6.1 – Architecture Apache Spark

6.3 Apache Mahout


6.3.1 Définition
Apache Mahout est un projet open-source qui fournit des implémentations de machine learning
distribuées pour Hadoop, Il permet d’utiliser des algorithmes de machine learning tels que la régres-
sion linéaire, la régression logistique, l’analyse en composantes principales (PCA) et les k-means sur
des données stockées dans HDFS. Il est conçu pour résoudre des problèmes de grande envergure de
traitement de données en utilisant des techniques de calcul parallèle et distribué pour accélérer les
performances des calculs, il offre des fonctionnalités pour la création de modèles d’apprentissage auto-
matique, l’analyse de données et la prévision.

6.3.2 Architecture Apache Mahout


Apache Mahout utilise une architecture en couches, comportant plusieurs composants.
- Algorithmes : Mahout fournit une large gamme d’algorithmes de machine learning distribués
pour Hadoop, tels que la régression linéaire, la régression logistique, l’analyse en composantes
principales (PCA), les k-means, la factorisation de matrices, les algorithmes de classification,
de clustering, de filtrage collaboratif...
- Mahout-Math : Il s’agit d’une bibliothèque de mathématiques pour les calculs de machine
learning, qui offre des fonctionnalités pour les vecteurs, les matrices et les opérations mathéma-
tiques courantes.
- Mahout-Vectors : Il s’agit d’une bibliothèque pour la manipulation de vecteurs de données,
qui prend en charge les formats de données tels que les matrices et les vecteurs.
- Mahout-Clustering : Il s’agit d’un module pour l’analyse de données de clustering, qui prend
en charge les algorithmes tels que k-means, Canopy et Dirichlet.
- Mahout-Recommender : Il s’agit d’un module pour la création de systèmes de recomman-
dation, qui prend en charge les algorithmes tels que l’estimation de la pertinence collaborative
(CBE), l’analyse de similitudes et l’estimation de pertinence basée sur les contenus.
- Mahout-Classification : Il s’agit d’un module pour l’analyse de données de classification, qui
prend en charge les algorithmes tels que la régression logistique, les arbres de décision, les forêts
aléatoires et les perceptrons multi-couches.

33
- Mahout-Hdfs : Il s’agit d’un module pour le traitement de données stockées dans HDFS, qui
prend en charge les formats de données tels que SequenceFiles, TextFiles et Avro

Figure 6.2 – Architecture Apache-Mahout

Le machine learning en Hadoop est de fournir des fonctionnalités d’apprentissage automa-


tique pour analyser les données stockées dans Hadoop de manière efficace, de découvrir
des modèles et des tendances cachés pour améliorer les processus et les décisions d’af-
faires.

34
CHAPITRE 7
VISUALISATION DES DONNÉES

35
7.1 Visualisation Hue
7.1.1 Définiton Hue
HUE (Hadoop User Experience) est une interface graphique utilisateur open source pour Hadoop,
un framework de traitement distribué de données. HUE permet aux utilisateurs d’interagir avec les
composants de Hadoop, tels que HDFS (Hadoop Distributed File System) pour le stockage distribué de
fichiers et MapReduce pour le traitement distribué de données, de manière plus conviviale et intuitive
que les interfaces en ligne de commande.
Avec HUE, les utilisateurs peuvent visualiser, gérer et analyser les données stockées dans Hadoop,
exécuter des tâches de traitement de données complexes, créer des requêtes SQL pour accéder à des
bases de données et générer des graphiques et des visualisations pour mieux comprendre leurs don-
nées. HUE propose également des fonctionnalités pour la gestion des clusters Hadoop, y compris la
surveillance des ressources et des tâches. HUE est souvent utilisé par les ingénieurs et les scientifiques
de données pour accéder et analyser des données stockées dans des clusters Hadoop.

Figure 7.1 – Interface HUE

7.1.2 Caractéristique Hue


De nombreuses fonctionnalités sont disponibles dans Hue en dehors de la simple interface Web
qu’il fournit aux développeurs Hadoop. Hue fournit les fonctionnalités répertoriées suivantes grâce
auxquelles il devient un outil populaire pour les développeurs Hadoop :
- Accès à l’API Hadoop
- Présence du navigateur de fichiers HDFS
- Navigateur et Job Designer
- Interface utilisateur d’administration
- Éditeur pour Hive Query
- Éditeur pour Pig Query
- Accès au shell Hadoop
- Les flux de travail peuvent accéder à l’interface Oozie
- Les recherches SOLR peuvent obtenir une interface distincte

7.1.3 Composantes HUE


Hue comporte de nombreux composants grâce auxquels l’utilisateur peut tirer parti de l’écosystème
Hadoop et l’implémenter correctement :

36
Figure 7.2 – Composante Hue

7.2 Visualisation D3
La visualisation de données avec D3 (Data-Driven Documents) est une technique qui utilise la
bibliothèque JavaScript D3 pour créer des graphiques et des visualisations interactifs à partir de don-
nées. D3 est une bibliothèque open source qui permet aux développeurs de créer des visualisations de
données dynamiques et personnalisées en utilisant les langages HTML, SVG et CSS.
La visualisation de données avec D3 peut être utilisée pour diverses applications, telles que la
surveillance des performances, l’analyse de données, la science des données, la surveillance de la sécurité,
la surveillance de la qualité, etc. Elle permet aux utilisateurs d’explorer et de comprendre rapidement
les données en utilisant des graphiques interactifs et des visualisations.
La visualisation de données avec D3 peut être réalisée en plusieurs étapes. Tout d’abord, les données
doivent être collectées et stockées dans un format de données standard, tel que JSON ou CSV. Ensuite,
les données sont transformées en un format compatible avec D3 en utilisant des fonctions JavaScript
personnalisées. Enfin, les graphiques et les visualisations sont créés en utilisant des fonctions D3 qui
permettent de dessiner les éléments de la visualisation et d’interagir avec les données.
D3 offre une grande flexibilité dans la création de visualisations de données, car il permet aux
développeurs de personnaliser tous les aspects de la visualisation, tels que les couleurs, les axes, les
légendes, les titres, les étiquettes, etc. Il offre également de nombreuses fonctionnalités pour l’interaction
avec les données, telles que le zoom, le survol, le glissement, le redimensionnement, etc.

37
CHAPITRE 8
APPLICATION HADOOP

38
8.1 Introduction
D’après ce que nous avons étudier dans les deux chapitre précédent théoriquement à propos le big
data et l’écosystème hadoop. Dans ce dérnier chapitre nous allons entamer la parti pratique de notre
projet.

8.2 Base de données


Le COVID-19 Case Surveillance Public Use Data est un ensemble de données compilant les cas de
COVID-19 dans le monde. Il est collecté par les gouvernements, les organismes de santé publique et
d’autres parties prenantes. Les données incluent des informations démographiques telles que le pays, la
région, la date, l’âge, le sexe, etc. ainsi que des informations sur les cas confirmés, les hospitalisations,
les décès, etc.Nous avons utilisées Ces données pour identifier les groupes à haut risque de décès due
à la COVID-19 en examinant les données démographiques et sur les comorbidités. En utilisant des
techniques d’apprentissage automatique, les analystes peuvent développer des modèles pour prédire les
groupes à haut risque en fonction de ces caractéristiques. Les décideurs peuvent utiliser ces informations
pour prendre des mesures pour protéger les groupes à haut risque et pour informer les politiques de
confinement, les priorités de vaccination, etc. Les études épidémiologiques basées sur ces données
peuvent également contribuer à une meilleure compréhension des facteurs de risque pour le décès lié
à la COVID-19 et informer les efforts futurs de prévention et de contrôle de la maladie. Les modèles
d’apprentissage automatique peuvent également aider à surveiller en temps réel l’évolution de la maladie
et à identifier rapidement les groupes à haut risque.

8.3 Implementation des résultats


L’analyse des données de COVID-19 Case Surveillance Public Use peut être effectuée en utilisant
des algorithmes de machine learning tels que les réseaux de neurones artificiels (ANN), MapReduce et
Spark MLIB. Les étapes pour créer un algorithme pour identifier les groupes à haut risque de décès
due à la COVID-19 sont les suivantes :
- Pré-traitement des données : Tout d’abord, les données doivent être pré-traitées pour éli-
miner les valeurs manquantes, les duplicatas, les données erronées, etc.La sélection des carac-
téristiques pertinentes pour l’analyse est également effectuée, ainsi que le One-Hot-Encoding
pour la représentation des variables catégoriques. Cette étape peut être effectuée en utilisant
des techniques de MapReduce pour une distribution efficace des données.

Figure 8.1 – Dataset après le pre-processing

- Split des données en ensemble d’entraînement et de test : Les données doivent être
divisées en deux ensembles, un ensemble d’entraînement utilisé pour former l’algorithme, et un
ensemble de test utilisé pour évaluer la performance de l’algorithme.
- Entraînement du modèle d’ANN : L’algorithme de réseau de neurones artificiel (ANN) est
entraîné sur l’ensemble d’entraînement en utilisant Spark MLIB pour optimiser la performance

39
de l’algorithme.
- Évaluation de la performance : La performance de l’algorithme est évaluée en utilisant l’en-
semble de test. Les métriques couramment utilisées pour évaluer les algorithmes d’apprentissage
automatique incluent la précision, et la spécificité. Les résultats ont montré une grande préci-
sion (94,7%), une grande précision globale (97,3%), une grande sensibilité (97,3%) et une grande
mesure F1 (95,9%) dans la prédiction des décès dus à la COVID-19. Ces résultats indiquent
que notre modèle est capable d’identifier les groupes à haut risque de décès dus à la COVID-19.
En utilisant cet algorithme, nous pouvons fournir une assistance précieuse aux décideurs pour
identifier les groupes à haut risque, ce qui peut aider à mieux protéger la santé publique et
à prévenir la propagation de la COVID-19. De plus, l’utilisation de techniques telles que Ma-
pReduce, la sélection des caractéristiques et la codification en one-hot a permis de réduire la
complexité des données et d’améliorer les performances de l’algorithme. Grâce à ces résultats,
nous espérons contribuer à l’amélioration des politiques de santé publique et des mesures de
prévention et de contrôle de la COVID-19 dans le monde entier.

8.4 Conclusion
En conclusion, la création d’un algorithme pour identifier les groupes à haut risque de décès dus
à la COVID-19 nécessite une préparation minutieuse des données, y compris l’élimination des valeurs
manquantes, les duplicatas et les données erronées. La sélection des caractéristiques pertinentes et
l’utilisation de l’encodage One-Hot sont également des étapes importantes pour préparer les données
pour l’analyse. L’utilisation de MapReduce a aidé à améliorer les performances de l’algorithme en four-
nissant une méthode efficace pour traiter les grandes quantités de données. L’entraînement d’un modèle
de réseau de neurones artificiel (ANN) à l’aide de Spark MLIB a permis d’optimiser la performance de
l’algorithme. En utilisant cet algorithme, nous pouvons fournir une assistance précieuse aux décideurs
pour identifier les groupes à haut risque, ce qui peut aider à mieux protéger la santé publique et à
prévenir la propagation de la COVID-19.

40
Conclusion Générale

Les technologies du Big Data s’inscrivent dans une évolution continue compte tenu du fait qu’elles
sont jeunes et pas encore stables, ce qui leur vaut la réticence des certaines entreprises. Actuellement,
le virage technologique est d’ores et déjà annoncé. Le Big Data s’impose tout doucement, mais certains
aspects ne sont pas encore à la hauteur des attentes, certaines pistes sont à explorer profondément avant
l’intégration dans les systèmes d’information : la sécurité, l’intégration avec le système d’information
(Cette intégration entraînera une modification des processus et par conséquent des besoins de formation
des ressources humaines), les ressources compétentes(actuellement les compétences ne sont pas encore
assez poussées dans le domaine), protection de la vie privée (la manipulation à grande échelle de des
données pose aussi le problème de la vie privée).

En conclusion, le Big Data, le système Hadoop et le Machine Learning sont trois domaines clés qui
ont un impact significatif sur les entreprises de tous les secteurs. Le Big Data permet aux entreprises
de collecter, stocker et analyser de grandes quantités de données pour prendre des décisions informées.
Le système Hadoop est un outil puissant pour gérer et analyser efficacement ces données en temps réel.
Il permet une scalabilité et une fiabilité élevées, et est de plus en plus utilisé pour traiter les données
en temps réel. Le Machine learning est un domaine qui permet de créer des modèles automatisés pour
prévoir des événements futurs ou pour comprendre les données plus facilement. Il permet également
d’optimiser les processus automatisés et de prendre des décisions plus informées. Les entreprises doivent
être conscientes des enjeux liés à la gestion, la sécurité et la protection de la vie privée des données
pour garantir une utilisation éthique et responsable de ces données. En somme, le Big Data, le système
Hadoop et le Machine Learning sont des domaines clés qui ont un impact significatif sur les entreprises,
et qui doivent être gérés efficacement pour maximiser les avantages pour les entreprises.

L’avenir du Big Data est prometteur, avec des avancées technologiques continuant à améliorer la
capacité à collecter, stocker et analyser des données de plus en plus volumineuses, permettant aux
entreprises de prendre des décisions plus informées et d’optimiser leurs opérations pour un avantage
compétitif accru.

41
BIBLIOGRAPHIE

[1] Fodil Belghait. Exploration de la migration de la base de données relationnelle du système de


gestion de processus d’affaires Oryx vers la base de données NO-SQL utilisée par la plateforme de
l’informatique de nuage de Hadoop. PhD thesis, École de technologie supérieure, 2012.
[2] APOORV CHAUDHARY. Architecture hbase. https://www.geeksforgeeks.org/
architecture-of-hbase/, 2021.
[3] Emmanuella Di Scala, Philippe Ricaud, Nathalie Pinsard, Robert Andres, and Samuel Rouzet.
L’incidence du «rapport à l’apprendre» sur l’évolution des conceptions scientifiques. Recherches &
éducations, (15) :153–170, 2016.
[4] Moussa Keita. Big data et technologies de stockage et de traitement des données massives : Com-
prendre les bases de l’écosystème hadoop (hdfs, mapreduce, yarn, hive, hbase, kafka et spark).
2021.
[5] Belilit Ryma and Kaci Sonia. Conception et Réalisation d’une base de donnée NoSQL sous Hadoop
dans le cadre d’une ville intelligente (contexte : Inondation). PhD thesis, Université Mouloud
Mammeri, 2019.
[6] Akram SAOUDI. Un système à base de big data pour l’aide à l’apprentissage et à la maintenance
informatique. PhD thesis, FACULTE DES MATHEMATIQUES ET DE L’INFORMATIQUE-
UNIVERSITE MOHAMED BOUDIAF-M’SILA, 2017.

42

Vous aimerez peut-être aussi