Table des matières

Projet - Concevoir un pipeline Hadoop résilient et dimensionné

  • Module : Big Data et traitement massif
  • Durée : 6 heures
  • Organisation : équipes de 2 personnes
  • Environnement : Hadoop sur Docker Compose (cluster fourni, identique à celui du TD1)
  • Technologies autorisées : HDFS, YARN, MapReduce Streaming et/ou Hive
  • Technologie exclue pour ce projet : Spark, traité dans l'autre partie du module
  • AWS : interdit pour ce projet (aucun risque de facturation)

1. Contexte : le lendemain de la grande promotion

Vous rejoignez l'équipe data de MarchéPlus, une enseigne de commerce en ligne. Après une grande campagne promotionnelle, la direction veut recevoir chaque matin un rapport fiable avant l'ouverture des équipes commerciales.

Aujourd'hui, les données sont traitées par un script exécuté sur une machine unique. Le rapport est parfois en retard, les relances produisent des résultats incohérents et personne ne sait combien de temps les données doivent rester disponibles.

Votre équipe doit proposer et démontrer une solution Hadoop pour ce traitement. Il ne s'agit pas seulement de faire fonctionner un job : vous devez faire des choix d'architecture, les justifier et expliciter leurs limites.

Besoin métier

Chaque nuit, trois flux distincts sont déposés par trois systèmes sources différents :

Le traitement doit produire, pour chaque journée :

Les équipes métier veulent consulter les résultats avant 6 h. Une journée de données peut être corrigée ou complétée le lendemain : le pipeline doit donc permettre une reprise ou un recalcul sans publier silencieusement un résultat incohérent.

Contraintes communiquées par l'entreprise

À vous d'identifier les ambiguïtés.

Le cahier des charges ne précise pas, par exemple, si les fichiers tardifs modifient les rapports déjà publiés, ni quelle règle métier appliquer à une commande annulée après la clôture de la journée, ni ce qu'il faut faire si le flux d'annulations n'est pas arrivé à 5 h. Formulez des hypothèses explicites plutôt que d'ignorer ces questions.

2. Données mises à disposition

Un jeu de données réduit est fourni, volontairement bien plus petit que les volumes réels. Il se compose de trois fichiers CSV (avec en-tête), plus un lot correctif, dans le dossier donnees/.

Schémas des trois flux

Flux 1 : commandes_AAAAMMJJ.csv (une ligne par ligne de commande)

commande_id,ligne_id,client_id,produit_id,categorie,quantite,prix_unitaire,devise,statut,horodatage_commande

Flux 2 : consultations_AAAAMMJJ.csv (une ligne par page produit vue)

session_id,client_id,produit_id,categorie,url,horodatage_vue

Flux 3 : annulations_AAAAMMJJ.csv (une ligne par annulation ou retour)

annulation_id,commande_id,ligne_id,type,motif,quantite,montant_rembourse,horodatage_annulation

Remarques sur les schémas :

Anomalies présentes dans le jeu

Le jeu contient des cas à détecter ou à traiter :

Vous pouvez compléter le jeu ou fabriquer quelques lignes problématiques si cela vous aide à tester vos choix.

Règles métier à définir

Avant de coder, décidez et documentez :

Il n'y a pas nécessairement une seule réponse possible. En revanche, une règle non documentée ne pourra pas être considérée comme un choix maîtrisé.

3. Votre mission

Concevez une solution Hadoop qui répond au besoin de MarchéPlus, puis démontrez-en une version réduite sur l'environnement disponible.

Paliers de réalisation

Les paliers sont cumulatifs. Le palier 1 est obligatoire ; les suivants se valorisent dans la grille d'évaluation.

Palier Contenu Statut
1 Nettoyage des flux, jointure commandes/annulations, CA net par catégorie, sortie des rejets, un contrôle de cohérence Obligatoire
2 Nombre de commandes par catégorie, mécanisme de publication fiable, test d'échec et de relance Attendu
3 Top 5 des produits consultés par catégorie, traitement du lot correctif, tests de montée en charge Extension

A. Architecture et parcours des données

Définissez le chemin des données depuis leur arrivée jusqu'à la publication des résultats.

Précisez notamment :

B. Stockage et capacité

Estimez le volume à stocker dans l'espace de travail HDFS (le stockage à 90 jours et à deux ans est traité séparément, voir section D), en tenant compte :

Expliquez pourquoi une réplication HDFS ne suffit pas à assurer la persistance des données après la destruction du cluster.

C. Traitement et qualité des données

Implémentez au minimum (palier 1) :

Le traitement peut utiliser MapReduce Streaming, Hive, ou une combinaison des deux. Expliquez pourquoi vous avez retenu cette approche, et comment vous avez réalisé la jointure (par exemple jointure côté reducer en Streaming, ou JOIN Hive) ainsi que son coût (données déplacées entre les nœuds, risque de déséquilibre si quelques clés concentrent beaucoup de lignes).

Le nettoyage des données est attendu en MapReduce Streaming, sauf justification contraire dans le registre des décisions.

N'utilisez pas Spark pour cette séance.

D. Relance et publication des résultats

Persistance hors cluster. Le dossier persistant/ de la machine hôte simule le stockage objet durable (type S3). Vous devez démontrer qu'un résultat validé survit à la destruction du cluster (docker compose down -v, recréation, restauration).

Décrivez ce qui se passe si :

Proposez un mécanisme qui évite qu'un résultat incomplet ou périmé soit présenté comme le résultat officiel (par exemple : sorties temporaires et sorties validées, renommage atomique, fichier marqueur de validation, versionnage par lot). Expliquez votre logique.

Test d'échec obligatoire (palier 2). Provoquez au moins une défaillance réelle et documentez le comportement observé : arrêt d'un DataNode, interruption d'un job avec yarn application -kill, fichier d'entrée corrompu ou flux manquant. Vous devez montrer ce qui se passe, pas seulement le décrire.

E. Dimensionnement et montée en charge

Proposez une configuration cible pour le scénario réel, même si vous ne pouvez tester que sur un petit cluster.

Distinguez les rôles des nœuds et expliquez :

Faites apparaître au moins un calcul de capacité et un calcul de débit (par exemple : quel débit de traitement faut-il pour absorber le volume de pointe dans la fenêtre disponible ?). Indiquez les hypothèses utilisées et précisez pourquoi une extrapolation à partir du jeu de données réduit reste approximative.

4. Contraintes de réalisation

5. Usage de l'IA générative

L'usage ponctuel d'un assistant IA est autorisé, comme il le serait dans un contexte professionnel. En revanche :

Les questions individuelles de la restitution orale porteront sur des éléments précis de votre solution.

6. Déroulé indicatif de la séance

Durée indicative Travail attendu
30 min Lire le cas, relever les ambiguïtés et formuler les hypothèses
45 min Dessiner l'architecture, choisir l'approche pour la jointure et répartir les tâches
2 h 15 Mettre en œuvre le traitement (palier 1, puis 2)
1 h Tester les erreurs, la relance et la cohérence des résultats
45 min Estimer la capacité, discuter le scaling et les limites
30 min Finaliser le dossier et préparer la restitution
15 min par équipe Présentation et questions individuelles

Vous pouvez organiser votre travail autrement, mais réservez du temps pour les tests et la restitution.

7. Livrable

Remettez un dossier court comprenant :

  1. un schéma d'architecture montrant les données, les stockages et les traitements ;
  2. un registre des hypothèses et décisions ;
  3. les scripts, requêtes ou commandes nécessaires pour reproduire le traitement ;
  4. une preuve d'exécution : sortie du job, nombre de lignes traitées par flux, lignes rejetées, résultat métier obtenu ;
  5. la description de la jointure et la vérification de sa justesse (par exemple : nombre d'annulations rattachées et nombre d'orphelines) ;
  6. un test de reprise ou d'échec, accompagné d'une explication du comportement observé ;
  7. une estimation de capacité et de dimensionnement, avec vos hypothèses ;
  8. une synthèse précisant ce qui devrait changer avant un déploiement réel ;
  9. la note d'usage de l'IA (une demi-page).

Registre des hypothèses et décisions

Sujet Hypothèse ou choix Justification Conséquence ou limite
Fichier tardif
Doublons et clé d'unicité
Annulation orpheline
Rattachement d'une annulation à une journée
Flux manquant ou incomplet
Choix de la jointure
Données conservées dans HDFS
Relance du job
Publication du résultat
Dimensionnement

Restitution orale

Votre présentation doit répondre à la question suivante :

Quelle décision de votre équipe vous semble la plus importante pour éviter un résultat erroné ou une dépense inutile, et pourquoi ?

Chaque membre pourra être interrogé individuellement sur n'importe quelle partie de la solution.

8. Critères d'évaluation

Critère Insuffisant Satisfaisant Excellent
Cohérence de l'architecture Schéma générique, composants mal reliés Parcours complet et cohérent avec les contraintes Choix justifiés par les contraintes, alternatives discutées
Compréhension de Hadoop Confusion entre rôles HDFS, YARN, moteur de calcul Rôles correctement distingués Impact de chaque composant sur la reprise et le scaling expliqué
Qualité du traitement Résultats non vérifiables, rejets ignorés Résultats vérifiés, rejets tracés, jointure correcte Contrôles de cohérence multiples, orphelins et écarts expliqués
Gestion de la reprise Relance écrase ou duplique les sorties Sorties temporaires/validées, relance idempotente Échec réellement testé, flux manquant et lot correctif gérés
Dimensionnement Chiffres sans hypothèses Calculs de capacité et de débit expliqués Limites identifiées (NameNode, déséquilibre de jointure, I/O) et marges justifiées
Prise de recul Prototype présenté comme production Limites du prototype listées Plan chiffré et priorisé avant déploiement réel
Maîtrise et usage de l'IA Code non expliqué, aucune trace Usage tracé, sorties vérifiées Erreurs de l'IA identifiées et corrigées, décisions clairement humaines
Défense des choix Un seul membre répond Chacun explique sa partie Chacun explique l'ensemble et les compromis

Une solution qui traite le petit fichier le plus rapidement possible n'est pas nécessairement la meilleure. Vous serez aussi évalués sur votre capacité à distinguer stockage temporaire et persistant, calcul et stockage, résultat calculé et résultat validé, et à expliquer les compromis retenus.