ADVANCED BIG DATA
Fiche de Révision Complète
Module Advanced Big Data
Classe 4ERP-BI
Thèmes Hadoop/HDFS · MapReduce · YARN · Hive · HBase · Sqoop · MongoDB · Neo4j · NoSQL
1. Fondamentaux des Bases de Données NoSQL
1.1 Limites du modèle relationnel (SGBDR)
• Montée en charge verticale uniquement → coûts non linéaires, limites physiques.
• Les contraintes ACID sont quasi impossibles à maintenir sur un cluster à grande échelle.
• Point unique de défaillance (SPOF) si le serveur central tombe.
1.2 Les « 4 V » du Big Data
V Définition
Volume Données très nombreuses (To, Po)
Vitesse Flux de données arrivant rapidement de sources multiples
Variété Données structurées, semi-structurées, non-structurées
Véracité Données stockées sur plusieurs sites / centres de données
1.3 Théorème CAP
Dans un environnement distribué, il est impossible de garantir simultanément les trois propriétés suivantes
:
• Consistency — tous les nœuds voient la même donnée après une écriture.
• Availability — chaque requête reçoit une réponse, même en cas de panne.
• Partition Tolerance — le système fonctionne malgré une rupture de communication.
■ Un système distribué doit choisir d'en privilégier deux seulement.
1.4 Propriétés BASE (alternative à ACID)
Propriété Signification
Basically Available Le système garantit la disponibilité.
Soft-state L'état peut changer sans nouvelle entrée (propagation).
Eventual Consistency Le système devient cohérent après un certain temps.
1.5 Les 4 typologies NoSQL
Type Description Exemples
Clé-Valeur Hashtable simple, accès par clé primaire uniquement. Redis, DynamoDB
Documents Documents hiérarchiques (JSON). Pas de jointures né[Link], CouchDB
Colonnes Colonnes dynamiques, pas de valeurs NULL stockées. HBase, Cassandra
Graphes Nœuds + relations, modèle idéal pour les interconnexions. Neo4j, OrientDB
2. Hadoop & HDFS
2.1 Principes de Hadoop
• Traitement distribué de données massives sur un cluster de machines ordinaires.
• Open source → coût optimisé.
• Gestion automatique des pannes (fault tolerance).
• Limite : pas adapté aux requêtes en temps réel ni à faible latence.
2.2 Architecture HDFS — Maître/Esclave
Composant Rôle
NameNode (Maître) Stocke les métadonnées : arborescence, liste des fichiers et blocs (taille par défaut 64 Mo), localisation su
DataNode (Esclave) Stocke les blocs réels. Envoie un heartbeat périodique au NameNode.
Secondary NameNode N'est PAS un serveur de secours. Fusionne le fichier edits + fsimage pour créer un point de contrôle (chec
2.3 Tolérance aux pannes — Réplication
• Facteur de réplication par défaut : 3 copies sur des nœuds différents (Rack Awareness).
• Si un DataNode tombe (absence de heartbeat) : le NameNode ordonne la re-réplication des blocs
perdus.
2.4 Hadoop 1.0 vs Hadoop 2.0
Propriété Hadoop 1.0 Hadoop 2.0
Fédération 1 seul NameNode (≤ 4 000 nœuds) Plusieurs NameNodes (scalabilité horizontale)
Haute disponibilité Inexistante — SPOF Active/Passive NameNodes
Ressources JobTracker + TaskTracker ResourceManager + NodeManager (YARN)
2.5 YARN — Gestion des ressources
YARN sépare la gestion des ressources du traitement des données :
• ResourceManager : gère l'allocation globale des ressources du cluster.
• NodeManager : gère les ressources d'un nœud individuel (CPU, RAM).
• ApplicationMaster : coordonne l'exécution d'un job spécifique.
✔ Avantage clé : plusieurs frameworks (MapReduce, Spark…) peuvent coexister sur le même cluster.
2.6 Commandes HDFS Shell fréquentes
Commande Description
hadoop fs -ls / Lister le contenu d'un répertoire
hadoop fs -mkdir /path Créer un répertoire
hadoop fs -put local /dst Copier un fichier local → HDFS
hadoop fs -get /hdfs local Copier un fichier HDFS → local
hadoop fs -rm /file Supprimer un fichier
hadoop fs -du -h /dir Afficher la taille des fichiers
3. Écosystème Hadoop
3.1 Vue d'ensemble des composants
Outil Rôle
Hive Data Warehouse sur HDFS. Interface SQL (HQL) pour requêter les données.
HBase BD orientée colonnes sur HDFS. Supporte lecture aléatoire + batch.
Pig Langage de script pour le traitement de données.
Sqoop Transfert de données structurées entre bases relationnelles et HDFS.
Flume Collecte et déplacement de données non structurées (logs) vers HDFS.
Oozie Planificateur et gestionnaire de workflows Hadoop.
Mahout Bibliothèque de Machine Learning distribué.
Hue Interface graphique pour naviguer dans HDFS/HBase, éditer Hive, Pig…
3.2 Hive — Tables partitionnées
Pour des requêtes rapides par pays/mois sur des données CSV stockées dans HDFS, on utilise une table
externe partitionnée :
• Table EXTERNE : Hive ne contrôle pas les fichiers HDFS sous-jacents (les données restent à leur
emplacement).
• Clause PARTITIONED BY : permet des requêtes rapides par filtre de partition.
• Clause LOCATION : pointe vers le chemin HDFS racine des données.
CREATE EXTERNAL TABLE ventes ( transaction_id STRING, produit_id STRING,
prix FLOAT, quantite INT, timestamp BIGINT ) PARTITIONED BY (pays STRING, mois STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE
LOCATION '/user/cloudera/data/ventes';
3.3 HBase — Architecture
Composant Rôle
HMaster Coordonne le cluster, gère la DDL (création/suppression de tables), assigne les régions aux RegionServer
RegionServer Gère un sous-ensemble de données (régions). Répond aux lectures/écritures client.
ZooKeeper Service de coordination distribué : surveille l'état du cluster, élit le HMaster actif.
Region Sous-ensemble d'une table trié par row key. Unité de base pour la distribution.
MemStore + HFile MemStore : buffer d'écriture en RAM. HFile : fichier de données sur HDFS après flush.
Commande pour afficher toutes les lignes de la table exam_BI :
scan 'exam_BI'
■ Dans l'output HBase : les lignes sont regroupées par ROW KEY. Un même ROW KEY peut avoir
plusieurs colonnes (cells). Compter les ROW KEY distincts = nombre de lignes insérées.
3.4 Sqoop — Import depuis une base relationnelle
• Outil dédié au transfert de données structurées depuis un SGBDR vers HDFS.
• Conserve les métadonnées (schéma) si utilisé avec --as-avrodatafile ou --hive-import.
sqoop import-all-tables \ -m 2 \ --connect jdbc:mysql://localhost:3306/Exam_Db \
--username=root --password=cloudera \ --compression-codec=snappy \
--as-avrodatafile \ --warehouse-dir='/user/hive/warehouse/[Link]'
4. MongoDB — CRUD & Agrégation
4.1 Opérations CRUD de base
Opération Méthode / Exemple
Insert [Link]({ champ: valeur })
Find [Link]({ critère }, { projection })
Update [Link]({ filtre }, { $set: { champ: val } })
Remove [Link]({ critère }, justOne)
4.2 Opérateurs de requête
Opérateur Signification Exemple
$gt / $gte Supérieur (ou égal) { age: { $gt: 18 } }
$lt / $lte Inférieur (ou égal) { score: { $lte: 98 } }
$in Valeur dans une liste { id: { $in: [1, 2, 3] } }
$exists Champ existe { prof: { $exists: true } }
$or OU logique { $or: [{a:1},{b:2}] }
$and ET logique { $and: [{a:1},{b:2}] }
$regex Recherche par motif { nom: { $regex: '^s' } }
4.3 Pipeline d'agrégation
L'agrégation traite les documents via une série d'étapes successives (stages) :
Stage Rôle
$match Filtre les documents (équivalent WHERE).
$project Sélectionne / calcule des champs (équivalent SELECT).
$group Regroupe les documents (équivalent GROUP BY). Nécessite un champ _id.
$sort Trie les documents.
$limit Limite le nombre de documents.
$skip Ignore N documents.
$unwind Déconstruit un tableau : 1 doc avec tableau de N éléments → N documents.
$lookup Jointure avec une autre collection (équivalent LEFT JOIN).
$out Écrit le résultat dans une nouvelle collection (doit être la dernière étape).
4.4 Exemples de requêtes types (Exercice 5)
a. Afficher uniquement le nom du chef de projet pour les projets 'En cours'
[Link]( { statut: 'En cours' }, { nom: 1, _id: 0 } )
b. Somme des budgets 'Non démarré', triés par budget décroissant
[Link]([ { $match: { statut: 'Non démarré' } },
{ $group: { _id: '$statut', budget_total: { $sum: '$budget' } } },
{ $sort: { budget_total: -1 } } ])
c. Créer un index sur les projets dont le budget est supérieur à 10 000
[Link]({ budget: 1 })
■ Un index ne filtre pas les données, il accélère les requêtes. On indexe le champ budget.
4.5 Disponibilité & Haute Disponibilité dans MongoDB
Mécanisme Caractéristique Explication
Sharding Scalabilité horizontale Distribue les données sur plusieurs shards selon une clé de partitionnement.
Replica Set Haute disponibilité Groupe de nœuds MongoDB (1 primaire + N secondaires). Basculement auto
Pas de SPOF Absence de point unique de défaillance
Le replica set élit automatiquement un nouveau primaire si l'actuel tombe.
5. Neo4j — Base de Données Orientée Graphe
5.1 Modèle de données
Élément Description Fonction
Nœud Entité de base du graphe. Équivalent d'un enregistrement.
Arc / Relation Lien typé et nommé entre deux nœuds. Porte une sémantique (ex : 'FRIEND').
Propriété Paire clé-valeur. Présente sur les nœuds ET les relations.
Label Nom organisant les nœuds. Permet de créer des groupes (ex : Person).
5.2 Caractéristiques techniques
• Native Graph Storage : structures de stockage dédiées aux nœuds et relations.
• Native Graph Processing : pointeurs physiques pour parcourir les relations sans index (millions de
sauts/seconde).
• Transactions 100% ACID.
• Requêtes 10 à 100× moins de code qu'en SQL.
• Modélisation Whiteboard Friendly : le schéma en base reflète le schéma sur tableau blanc.
5.3 Cypher — Commandes essentielles
Opération Commande Cypher
Créer un nœud CREATE (n:Person {name: 'Alice'})
Trouver des nœuds MATCH (n:Person) RETURN n
Filtrer MATCH (n:Person) WHERE [Link] > 30 RETURN n
Créer une relation MATCH (a:Person),(b:Person) WHERE [Link]='A' AND [Link]='B' CREATE (a)-[:FRIEND]->(b)
Trouver voisins MATCH (n)-[:FRIEND]->(m) RETURN [Link]
Supprimer une propriété MATCH (n:Person {name:'John'}) REMOVE [Link]
Afficher en graphe Ajouter la clause : (aucune commande supplémentaire — résultat graphe dans l'interface Neo4j Browser)
6. QCU Corrigés — Exercice 6 de l'examen
1. Quel est le rôle de : MATCH (n)-[:FRIEND]->(m) RETURN [Link]
✔ a. Retourne tous les nœuds ayant une relation FRIEND avec n.
b. Retourne toutes les relations FRIEND dans la base.
c. Crée une nouvelle relation FRIEND entre deux nœuds.
d. Aucune de ces réponses.
2. Supprimer la propriété name du nœud 'John' :
a. SET [Link] = null
b. DROP [Link]
c. DETACH name
✔ d. Aucune de ces réponses → Correct : MATCH (n {name:'John'}) REMOVE [Link]
3. Créer un nœud Person nommé 'Alice' dans Neo4j :
a. INSERT (n:Person {name: 'Alice'})
b. ADD (n:Person {name: 'Alice'})
c. NEW (n:Person {name: 'Alice'})
✔ d. Aucune de ces réponses → Correct : CREATE (n:Person {name: 'Alice'})
4. Modéliser le résultat en graphe dans Neo4j :
a. SCAN Graph
b. PRINT Graph
c. SHOW Graph
✔ d. Aucune de ces réponses → le Browser affiche le graphe automatiquement
5. Les bases de données NoSQL sont :
✔ a. Recommandées dans un contexte d'IA.
b. Non recommandées dans un contexte d'IA.
c. Obligatoires pour les traitements basés sur un modèle d'IA.
d. Aucune de ces réponses → elles peuvent être utilisées selon le contexte.
6. Les bases de données NoSQL se basent toujours sur :
a. Le sharding des données.
b. Le drainage des données.
c. Les réponses a et b.
✔ d. Aucune de ces réponses → pas toujours sur le sharding.
7. Rôle du JobTracker vs TaskTracker dans Hadoop v1 :
a. JobTracker exécute les tâches Map/Reduce, TaskTracker gère les blocs.
✔ b. JobTracker planifie l'exécution des tâches, TaskTracker les exécute sur les DataNodes.
c. JobTracker surveille les DataNodes, TaskTracker gère les ressources.
d. JobTracker gère les données HDFS, TaskTracker fait le MapReduce.
7. Mémo — Points Clés à Retenir
Thème Point clé
HDFS Bloc = 64 Mo par défaut | Réplication × 3 | Secondary NameNode ≠ backup
YARN ResourceManager + NodeManager remplacent JobTracker + TaskTracker
Hive Table EXTERNE + PARTITIONED BY pour des requêtes rapides par pays/mois
HBase scan 'table' pour tout afficher | compter les ROW KEY distincts = nb lignes
Sqoop --as-avrodatafile pour conserver les métadonnées
MongoDB $group nécessite _id | $out = dernière étape | createIndex() pour indexer
Neo4j CREATE (pas INSERT) | REMOVE (pas DROP) | pas de commande SHOW Graph
CAP Impossible de garantir C + A + P simultanément
BASE Basically Available + Soft-state + Eventual Consistency
NoSQL Complément du relationnel — pas un remplacement total