Ecosystème du Big Data
Réalisé en collaboration avec Pr.K. EL AZHARI, Pr.L .Karim, et Pr.S. Nazhaoui
Ecosystème du Big Data Base de données relationnelle ?
OLTP : Données structurés.
Ecosystème du Big Data Systèmes de fichiers
Quantcast File System (QFS)
Ecosystème du Big Data Bases de données NoSQL
Ecosystème du Big Data Bases de données NewSQL
Ecosystème du Big Data Intégration de données
Ecosystème du Big Data Programmation distribuée
Pig
Ecosystème du Big Data Machine Learning
Ecosystème du Big Data Visualisation
Ecosystème du Big Data Sécurité
Ecosystème du Big Data Récapitulatif
Ecosystème du Big Data Récapitulatif
APACHE HADOOP
Réalisé en collaboration avec Pr.K. EL AZHARI, Pr.L .Karim, et Pr.S. Nazhaoui
Rappel
Rappel
Rappel
Rappel
Rappel
APACHE HADOOP C’est quoi?
01 2004 : conçu par Doug Cutting.
02 Framework Open Source
03 Ecrit en java
04 Aide à créer des applications distribuées
05 Résiste aux pannes
06 2009 : fondation logicielle Apache
APACHE HADOOP C’est quoi?
HDFS
Stockage des données dans des clusters
(Storage)
APACHE HADOOP
Yarn Traitement parallèle et distribué des
(Processing) données stockées dans HDFS
APACHE HADOOP Utilisation?
01 Stockage moins coûteux de très gros volumes données (Po)
02 Les réseaux sociaux
03 Les sites e-commerce comme
04 Analyse de fichiers non structurés (log)
APACHE HADOOP HDFS
01 Hadoop Distributed File System
02 Système de stockage
parallèle vs distribué, y t-il une
différence ?
03 Possibilité de stocker des pétaoctets de données
04 Traitement parallèle et distribué
05 Tolérance aux erreurs avec la réplication des données
APACHE HADOOP HDFS
APACHE HADOOP HDFS
APACHE HADOOP Un schéma des nodes HDFS
Les datanodes contiennent des blocs, le namenode sait où
sont les fichiers : quels blocs et quels datanodes.
APACHE HADOOP HDFS
Replication factor is : 3 but we can change it :D
APACHE HADOOP HDFS: Écriture d'un fichier
APACHE HADOOP HDFS: Lecture d'un fichier
APACHE HADOOP HDFS
APACHE HADOOP HDFS
• Le Namenode est le process qui pilote
HDFS: il sait ou sont stockées les données.
• C’est lui qui orchestre les DataNodes.
• Nécessite beaucoup de RAM.
APACHE HADOOP HDFS
Secondary
NameNode
• Prends des snapshots des logs du
Namenode à intervalles réguliers.
• Ce n'est pas un backup du NameNode :
il peut aider à récupérer des données et
relancer un cluster, mais ça n'a rien
d'automatique.
APACHE HADOOP HDFS configuration high availability
• Comme le namenode est absolument vital pour HDFS mais unique, Hadoop propose une
configuration appelée high availability dans laquelle il y a 2 autres namenodes en secours,
capables de prendre le relais instantanément en cas de panne du namenode initial.
• Les namenodes de secours se comportent comme des clones. Ils sont en état d’attente et
mis à jour en permanence à l’aide de services appelés JournalNodes.
APACHE HADOOP HDFS configuration high availability
Le Standby NameNode et le Secondary NameNode sont deux composants distincts dans le
système de fichiers distribué Hadoop (HDFS), chacun ayant un rôle spécifique. Voici les
différences entre les deux :
1. Standby NameNode:
- Le Standby NameNode est une réplique en attente du NameNode principal.
- Il maintient une copie à jour de toutes les métadonnées du système de fichiers.
- En cas de défaillance du NameNode principal, le Standby NameNode peut prendre le
relais et devenir le nouveau NameNode principal, assurant ainsi la continuité du service sans perte
de données.
- Le Standby NameNode est utilisé pour la haute disponibilité du système, offrant une
redondance pour garantir la disponibilité continue du système de fichiers.
APACHE HADOOP HDFS configuration high availability
2. Secondary NameNode :
- Le Secondary NameNode joue un rôle de support pour le NameNode principal.
- Il fusionne régulièrement le journal des opérations (edits log) et le fichier de snapshot
(fsimage) du NameNode principal pour éviter que le journal d'opérations ne devienne trop
volumineux.
- Il ne prend pas en charge la reprise en cas de défaillance du NameNode principal.
- Le Secondary NameNode n'offre pas de haute disponibilité. Son rôle est principalement lié
à la gestion des métadonnées et à l'optimisation des performances du NameNode principal.
En résumé, la principale différence entre le Standby NameNode et le Secondary NameNode
réside dans leurs rôles et leurs responsabilités. Le Standby NameNode est une réplique en attente
du NameNode principal, offrant la haute disponibilité du système, tandis que le Secondary
NameNode agit comme un support pour le NameNode principal en fusionnant les métadonnées
pour optimiser les performances.
APACHE HADOOP HDFS configuration high availability
Le Secondary NameNode décharge le NameNode principal en effectuant une tâche de fusion
régulière pour optimiser les performances du système de fichiers distribué Hadoop (HDFS). Voici
comment cela fonctionne :
• Fusion des journaux d'opérations (edits log) et des instantanés (fsimage) :
Le Secondary NameNode récupère périodiquement le journal des opérations (edits log) et
l'instantané du système de fichiers (fsimage) du NameNode principal.
Il fusionne ces deux éléments pour créer une nouvelle version consolidée de l'instantané, qui
contient toutes les modifications apportées au système de fichiers depuis la dernière fusion.
• Réduction de la taille du journal d'opérations :
En fusionnant régulièrement le journal des opérations avec l'instantané, le Secondary NameNode
réduit la taille du journal des opérations, ce qui améliore les performances du NameNode
principal lors de la récupération des métadonnées du système de fichiers.
APACHE HADOOP HDFS configuration high availability
• Amélioration des performances :
En réduisant la taille du journal des opérations et en optimisant l'instantané du système de
fichiers, le Secondary NameNode aide à améliorer les performances globales du système de
fichiers HDFS en déchargeant le NameNode principal de cette tâche de fusion et en réduisant le
temps nécessaire pour démarrer le système en cas de redémarrage.
Les données elles-mêmes ne se déplacent pas du NameNode principal vers le Secondary
NameNode lors de ce processus de fusion. Au lieu de cela, le Secondary NameNode récupère les
métadonnées nécessaires pour effectuer la fusion et crée un nouvel instantané consolidé pour
aider à optimiser les performances du système de fichiers HDFS.
APACHE HADOOP HDFS configuration high availability
• Amélioration des performances :
En réduisant la taille du journal des opérations et en optimisant l'instantané du système de
fichiers, le Secondary NameNode aide à améliorer les performances globales du système de
fichiers HDFS en déchargeant le NameNode principal de cette tâche de fusion et en réduisant le
temps nécessaire pour démarrer le système en cas de redémarrage.
Les données elles-mêmes ne se déplacent pas du NameNode principal vers le Secondary
NameNode lors de ce processus de fusion. Au lieu de cela, le Secondary NameNode récupère les
métadonnées nécessaires pour effectuer la fusion et crée un nouvel instantané consolidé pour
aider à optimiser les performances du système de fichiers HDFS.
APACHE HADOOP HDFS configuration high availability
Après la fusion , le nœud principal stocke le résultat de la fusion réalisé?
Oui, après la fusion, le résultat de la fusion réalisée par le Secondary NameNode est renvoyé et
stocké sur le NameNode principal. Plus précisément, le nouvel instantané consolidé (fsimage) est
mis à jour sur le NameNode principal pour refléter les modifications apportées au système de
fichiers.
Ainsi, le processus de fusion effectué par le Secondary NameNode permet de mettre à jour les
métadonnées du système de fichiers sur le NameNode principal de manière efficace, réduisant
ainsi la taille du journal des opérations et améliorant les performances globales du système de
fichiers distribué Hadoop (HDFS).
APACHE HADOOP HDFS: La commande Hadoop fs
• Comme indiqué plus haut, la commande permettant de stocker ou extraire des fichiers de HDFS est
l'utilitaire console hadoop, avec l'option fs. Il réplique globalement les commandes systèmes
standard Linux, et est très simple à utiliser:
• hadoop fs -put [Link] /data_input/[Link]
➢ Pour stocker le fichier [Link] sur HDFS dans le répertoire /data_input.
• hadoop fs -get /data_input/[Link] [Link]
➢ Pour obtenir le fichier /data_input/[Link] de HDFS et le stocker dans le fichier local
[Link].
• hadoop fs -mkdir /data_input
➢ Pour créer le répertoire /data_input
• hadoop fs -rm /data_input/[Link]
➢ Pour supprimer le fichier /data_input/[Link]
• D'autres commandes usuelles: -ls, -cp, -rmr, etc...
APACHE HADOOP Commande hdfs dfs
La commande hdfs dfs et ses options permet de gérer les
fichiers et dossiers :
hdfs dfs -help
hdfs dfs -ls [noms...] (pas d’option -l)
hdfs dfs -cat nom
hdfs dfs -mv ancien nouveau
hdfs dfs -cp ancien nouveau
hdfs dfs -mkdir dossier
APACHE HADOOP Échanges entre HDFS et le monde
Pour placer un fichier dans HDFS, deux commandes équivalentes :
• hdfs dfs -copyFromLocal fichiersrc fichierdst
• hdfs dfs -put fichiersrc [fichierdst]
Pour extraire un fichier de HDFS, deux commandes possibles :
hdfs dfs -copyToLocal fichiersrc dst
hdfs dfs -get fichiersrc [fichierdst]
Exemple : hdfs dfs -mkdir -p livres
wget [Link]
hdfs dfs -put dracula livres
hdfs dfs -ls livres
hdfs dfs -get livres/center_earth
APACHE HADOOP Commande hdfs dfs
Les commandes hadoop fs
Dialoguer avec HDFS
Envoyer un fichier sur hdfs
Pour envoyer un fichier sur hdfs, on utilise la commande
copyFromLocal de la manière suivante
L'option -f permet de
hdfs dfs -copyFromLocal -f "/home/[Link]" "/user/cloudera/fichier" d’écraser les fichiers
ayant le même nom
hdfs dfs -put "/home/[Link]" "/user/cloudera/fichier" que la source sans
confirmation
Récupérer en local un fichier sur hdfs
Pour récupérer un fichier présent sur hdfs, on utilise la commande
copyToLocal hdfs dfs –copyToLocal "/user/cloudera/fichier" "/home/[Link]"
hdfs dfs -get "/user/cloudera/fichier" "/home/[Link]"
APACHE HADOOP Commande hdfs dfs
Parcourir les données Lister les fichiers d'un répertoire sur hdfs
Pour lister les fichiers présents sur un répertoire, on utilise
la commande ls
hdfs dfs -ls /user/cloudera
Found 3 items
drwxr-xr-x - cloudera cloudera 0 2019-12-29 05:54
/user/cloudera/chargement
drwxr-xr-x - cloudera cloudera 0 2019-12-29 05:53 /user/cloudera/reception
drwxr-xr-x - cloudera cloudera 0 2019-12-29 05:55 /user/cloudera/tables_hive
Afficher un fichier
Pour afficher un fichier, on utilise la commande cat
hdfs dfs -cat /user/cloudera/fichier/part-m-00000
5
3
APACHE HADOOP Commande hdfs dfs
Supprimer un élément
Pour supprimer un fichier, on utilise rm
hdfs dfs -rm /user/cloudera/fichier/part-m-00000
Pour supprimer un répertoire, on utilise l'option de rm -r. On
peut supprimer la demande de confirmation à l'aide de l'option
-f
hdfs dfs -rm -f -r /user/cloudera/fichier
Pour supprimer le contenu d'un répertoire, on peut utiliser le caractère *, mais
attention, il faut que celui-ci soit interprété par la commande hdfs dfs et non par le
shell. Il faut donc protéger * avec des quotes ou un backslash:
hdfs dfs -rm -f /user/cloudera/fichier/'*'
5
4
APACHE HADOOP Commande hdfs dfs
Copier un fichier
Pour copier un fichier, on utilise la commande cp
hdfs dfs -cp /user/cloudera/d1/'*' /user/cloudera/d2
L'option -f permet de supprimer les fichiers ayant le même
nom que la source sans confirmation :
hdfs dfs -cp -f /user/cloudera/d1/'*' /user/cloudera/d2
Déplacer un fichier
Pour déplacer un fichier, on utilise la commande mv
hdfs dfs -mv /user/cloudera/d1/'*' /user/cloudera/d2
5
5
APACHE HADOOP Commande hdfs dfs
Créer un répertoire
Pour créer un répertoire, on utilise la commande mkdir
hdfs dfs -mkdir /user/rep1
Pour recréer toute une arborescence, on utilise mkdir -p
hdfs dfs -mkdir -p /user/r1/r2/r3
Ajouter du contenu à un fichier
Pour utiliser un fichier local comme source
hdfs dfs –appendToFile /home/cloudera/Desktop/[Link] /user/[Link]
Pour utiliser le clavier comme source (pour arrêter la saisir appuyer sur Ctrl+D)
hdfs dfs –appendToFile - /user/[Link]
54
APACHE HADOOP Exercice réplication
Taille fichier à traiter : 320 Mo
Taille du bloc : 128Mo
Nombre de réplication : 2
Cluster avec : 2 Noeuds
APACHE HADOOP Exercice réplication
128
Mo
128
Mo
320 Mo 64
Mo
APACHE HADOOP Exercice réplication
Taille fichier à traiter : 416 Mo
Taille du bloc : 64 Mo
Nombre de réplication : 3
Cluster avec : 5 Noeuds
APACHE HADOOP Exercice réplication
APACHE HADOOP Exercice réplication
01 Nous devons placer la première réplique du bloc dans le rack disponible le plus proche.
02 La seconde réplique de bloc n'est pas placée dans le même rack que celui où est placée la
première réplique
03 La troisième réplique doit être placée dans l'emplacement de la seconde réplique, mais
dans le nœud différent.
APACHE HADOOP Exercice réplication
Exemple :
RACK 1 RACK 2 RACK 3
B1
B2
B3
APACHE HADOOP Exercice réplication
Exemple :
Règle 1 : Nous devons placer la première réplique du bloc dans le rack disponible le plus proche.
RACK 1 RACK 2 RACK 3
B1
B2
B3
APACHE HADOOP Exercice réplication
Exemple :
Règle 1 : Nous devons placer la première réplique du bloc dans le rack disponible le plus proche.
RACK 1 RACK 2 RACK 3
B1 B1
B2
B3
APACHE HADOOP Exercice réplication
Exemple :
Règle 2 : La seconde réplique de bloc n'est pas placée dans le même rack que celui où est placée
la première réplique.
RACK 1 RACK 2 RACK 3
B1 B1
B2
B3
APACHE HADOOP Exercice réplication
Exemple :
Règle 2 : La seconde réplique de bloc n'est pas placée dans le même rack que celui où est placée
la première réplique.
RACK 1 RACK 2 RACK 3
B1 B1 B1
B2
B3
APACHE HADOOP Exercice réplication
Exemple :
Règle 3 : La troisième réplique doit être placée dans l'emplacement de la seconde réplique, mais
dans un nœud différent.
RACK 1 RACK 2 RACK 3
B1 B1 B1
B2
B3
APACHE HADOOP Exercice réplication
Exemple :
Règle 3 : La troisième réplique doit être placée dans l'emplacement de la seconde réplique, mais
dans un nœud différent.
RACK 1 RACK 2 RACK 3
B1 B1 B1
B2 B1
B3
APACHE HADOOP Exercice réplication
Exemple :
RACK 1 RACK 2 RACK 3
B1 B1 B1
B2 B1
B3 B2
APACHE HADOOP Exercice réplication
Exemple :
RACK 1 RACK 2 RACK 3
B1 B1 B1 B2
B2 B1
B3 B2
APACHE HADOOP Exercice réplication
Exemple :
RACK 1 RACK 2 RACK 3
B1 B1 B1 B2
B2 B1
B3 B2
B2
APACHE HADOOP Exercice réplication
Exemple :
RACK 1 RACK 2 RACK 3
B1 B1 B1 B2
B2 B1
B3 B2
B3 B2
APACHE HADOOP Exercice réplication
Exemple :
RACK 1 RACK 2 RACK 3
B1 B1 B1 B2
B2 B1 B3
B3 B2
B3 B2
APACHE HADOOP Exercice réplication
RACK 1 RACK 2 RACK 3
B1 B1 B1 B2
B2 B1 B3
B3 B2 B3
B3 B2
APACHE HADOOP Solution?
01
Stockage des données volumineuses?
Stockage distribué sur plusieurs blocks.
• HDFS est un moyen distribué de stocker des données volumineuses. Vos
données sont stockées dans des blocs à travers les DataNodes et vous
pouvez spécifier la taille des blocs. En principe, si vous avez 512 Mo de
données et que vous avez configuré HDFS de telle sorte qu'il crée 128 Mo
de blocs de données, HDFS divisera les données en 4 blocs, soit 512/128=4,
et les stockera dans les nœuds de données (DataNodes).
• Il résout également le problème de la mise à l'échelle. Il se concentre sur
l'évolution horizontale plutôt que sur l'évolution verticale. Vous pouvez
toujours ajouter des nœuds de données supplémentaires au cluster HDFS
en fonction des besoins, au lieu d'augmenter les ressources de vos nœuds de
données. En résumé, pour stocker 1 To de données, vous n'avez pas besoin
d'un système de 1 To. Vous pouvez le faire sur plusieurs systèmes de 128 Go
ou même moins.
APACHE HADOOP Solution?
Scalabilité - Vertical vs Horizontal
Lorsque la charge serveur augmente, et qu’il est temps de rajouter des ressources
matérielles à votre infrastructure, deux approches s’offrent à vous : augmenter vos
ressources verticalement ou horizontalement. On parle de vertical scaling
versus horizontal scaling.
Scalabilité verticale –Vertical Scaling
La scalabilité verticale est la plus intuitive : cela revient à ajouter des ressources à
un unique serveur (en lui ajoutant de la RAM, en changeant son CPU pour un plus
véloce…). C’est simple ! Mais :
Le coût est rapidement exponentiel de la capacité matérielle.
APACHE HADOOP Solution?
Scalabilité verticale –Vertical Scaling
Cette solution a des limites : vous pourrez probablement multiplier par 2 les
capacités de votre serveur, peut-être même par 5, mais pas par 100 !
Cela reste dans la majorité des cas la solution la plus pragmatique, et en
particulier pour des applicatifs en production depuis de nombreuses années.
APACHE HADOOP Solution?
Scalabilité Horizontale –Horizontal Scaling
La scalabilité horizontale revient à ajouter de nouveaux serveurs réalisant le
même type tâche. Cela permet de n’utiliser que des serveurs standards (on parle
de commodity hardware). Mais les implications logicielles sont rapidement
importantes !
APACHE HADOOP Solution?
02
Stockage des données Hétérogènes ?
Stockage toutes sortes de données.
• Avec HDFS, vous pouvez stocker toutes sortes de données, qu'elles soient
structurées, semi-structurées ou non structurées. Dans HDFS, il n'y a pas
de validation de schéma préalable. Il suit également le modèle "write once
and read many" (écrire une fois et lire plusieurs fois). Ainsi, vous pouvez
écrire les données une seule fois et les lire plusieurs fois pour en tirer des
conclusions.
APACHE HADOOP Solution?
03
Accès rapide ??
Accès et traitement rapide aux données
• Le troisième défi consistait à accéder aux données et à les traiter plus
rapidement. Oui, c'est l'un des principaux défis du Big Data. Pour le résoudre,
nous déplaçons le traitement vers les données et non les données vers le
traitement. Qu'est-ce que cela signifie ? Au lieu de déplacer les données vers
le nœud principal et de les traiter ensuite. Dans MapReduce, la logique de
traitement est envoyée aux différents nœuds esclaves, puis les données
sont traitées parallèlement sur les différents nœuds esclaves. Les résultats
traités sont ensuite envoyés au nœud principal où ils sont fusionnés et la
réponse est renvoyée au client.
APACHE HADOOP Ecosystème
Le système de fichier distribué de Apache Hadoop.
APACHE HADOOP Ecosystème
• YARN : Négociateur de ressources. Il est devenu un sous projet de
HADOOP à partir de 2012 (déployé en 2013), donc il a été ajouté
comme une fonctionnalité clé de Hadoop avec la mise à jour 2
(version 2).
• Quand on parle Hadoop 1 (version 1), donc il n'y avait pas yarn,
• Avant l'ajout de yarn, ce qui se passait, c'est qu'on ne pouvait
travailler qu'avec MapReduce.
• Quand on accède à HDFS avec l'arrivée de Yarn, donc, ça nous a
permis de travailler avec d'autres applications au delà de
MapReduce.
APACHE HADOOP Ecosystème
• Yarn (Yet Another Resource Negotiator) : Il
s’occupe de la gestion et de l’allocation des
ressources (CPU, Ram etc..) aux différentes
applications (mapreduce, spark, impala etc…)
lancées sur le cluster.
• Mesos : Projet Apache plus récent que Yarn, c’est
aussi un système de gestion de ressource de
clusters. Il va permettre de gérer et de partager
de manière fine, souple et dynamique des
ressources entre différents clusters, pour diverses
applications
APACHE HADOOP Ecosystème
HBASE : Une base de données NoSQL orientée
colonne.
Hive: Une base de donnée NewSQL(Nous pouvons
faire de SQL standard).
APACHE HADOOP Ecosystème
On a R Connecteurs qui nous permet de créer un
package avec des bibliothèques pour travailler
avec le langage R pour faire des statistiques.
APACHE HADOOP Ecosystème
On a Mahout qui nous permet de faire la
programmation machine learning.
APACHE HADOOP Ecosystème
On a Pig pour la programmation distribué.
Pig : Moteur permettant de manipuler tous types
de données avec un langage beaucoup plus
intuitif que le java mapreduce. Il est beaucoup
utilisé pour tous les process ETL, il permet d’aller
plus loin que le SQL. Une fois exécuter le code Pig
génère du mapreduce.
APACHE HADOOP Ecosystème
• Apache Oozie qui nous permet de faire
l'ordonnancement de flux dédié au logiciel
Hadoop.
• Il est implémenté comme une application web
Java exécutée dans un conteneur de servlets
de Java.
• Il permet d’ordonnancer et de lancer tous
types d’applications (spark, impala, shell, hive,
pig ….) dans l’écosystème Hadoop.
APACHE HADOOP Ecosystème
• On a ZooKeeper un logiciel de gestion de
configuration pour les systèmes distribués.
• Zookeeper permet de mettre en œuvre la
coordination des services de l’écosystème et
leur synchronisation dans un environnement
distribué. Seul les administrateurs peuvent être
amené à interagir avec lui.
APACHE HADOOP Ecosystème
Apache Flume : C’est un système distribué
permettant de récupérer des logs de plusieurs
sources, de les agréger et de les pousser dans
HDFS. Il est fiable, flexible, assez intuitif et porté
par toutes les distributions Hadoop.
APACHE HADOOP Ecosystème
Apache Sqoop est une interface de ligne de
commande qui nous permet de transférer des
données entre des bases de données
relationnelles et Hadoop.
APACHE HADOOP Ecosystème
On a Apache Ambari qui permet aux
administrateurs systèmes de provisionner, de
gérer et de surveiller un cluster Hadoop.
26
APACHE HADOOP Quand ne pas utiliser Hadoop ?
Accès aux données à faible latence : Accès
rapide à de petites parties de données.
Modification multiple des données : Hadoop
est mieux adapté uniquement si nous sommes
principalement concernés par la lecture des
données et non par leur modification.
Nombreux petits fichiers : Hadoop convient
aux scénarios dans lesquels les fichiers sont
peu nombreux mais volumineux.
APACHE HADOOP Quand utiliser Hadoop ?
Search – Yahoo, Amazon, Zvents
Log processing – Facebook, Yahoo
Data Warehouse – Facebook, AOL
Video and Image Analysis – New York Times,
Eyealike