À propos du projet

La plateforme d'analyse de clickstream e-commerce est un projet full-stack de data engineering qui traite environ 285 millions d'événements de clickstream e-commerce à partir d'un jeu de données Kaggle couvrant les mois d'octobre à novembre 2019. ## Aperçu La plateforme ingère des données CSV brutes (~14 Go) dans un stockage objet compatible S3 (MinIO), exécute des analyses batch via Apache Spark, effectue un streaming en direct via Kafka et Spark Structured Streaming, lance des jobs Hadoop MapReduce, et expose les résultats à travers un backend FastAPI vers un dashboard frontend React. ## Composants d'architecture **Ingestion & Stockage :** - MinIO (stockage objet compatible S3) conserve les CSV bruts et les sorties Parquet - PostgreSQL 16.3 stocke les KPI agrégés et les résultats directement interrogeables - Redis 7.4.1 fournit la couche de caching - Apache Kafka 3.9 (mode KRaft) agit comme bus de messagerie pour les données en streaming **Traitement :** - Apache Spark 3.5 gère l'ETL batch avec cinq jobs PySpark : calcul quotidien des KPI, analyse de funnel, détection d'abandon de panier, scoring d'affinité produits, et préparation des données pour MapReduce - Apache Hadoop 3.4.1 exécutant YARN Streaming lance deux jobs MapReduce (comptage d'événements par catégorie et agrégation du chiffre d'affaires par marque) - Spark Structured Streaming consomme depuis Kafka, agrégeant les sessions actives toutes les 5 secondes et effectuant un upsert dans PostgreSQL **Orchestration & API :** - Apache Airflow 2.9.3 orchestre l'intégralité du pipeline batch sous forme de DAG - FastAPI (avec asyncpg) expose des endpoints REST pour le dashboard - Les templates Terraform couvrent les déploiements AWS et GCP **Frontend :** - React 18.3 avec TypeScript, Tailwind CSS et Recharts affichent quatre pages : - Vue d'ensemble : cartes KPI et graphiques de tendances quotidiennes - Analyse de funnel : flux vue-panier-achat et abandon par catégorie - Analytics produits : top produits, marques et catégories - Moniteur en direct : suivi de sessions en temps réel via Server-Sent Events ## Pipeline de données 1. **Analyses batch** : Les CSV bruts sont lus depuis MinIO ; les métriques quotidiennes (événements, utilisateurs, chiffre d'affaires, taux de conversion), ainsi que les produits/marques/catégories les plus populaires, sont calculées et écrites dans PostgreSQL. Un job séparé calcule les taux de funnel par catégorie, identifie les abandons de panier et calcule les scores de lift d'affinité produits (échantillonnés à 10 % pour des raisons de performance). 2. **MapReduce** : Les fichiers Parquet préparés sont convertis en CSV et uploadés sur HDFS, où les jobs Hadoop Streaming comptent les événements par catégorie/event_type et agrègent le chiffre d'affaires par marque. 3. **Streaming en direct** : Un producteur Kafka rejoue le CSV à un débit configurable (défaut : 200 événements/seconde). Un consommateur Spark Streaming agrège les sessions actives en micro-lots de 5 secondes et les persiste dans la table `live_sessions`. ## Déploiement L'ensemble des 13 services s'exécute via Docker Compose. Les prérequis incluent Docker Desktop >= 4.30 avec au moins 16 Go de RAM et 30 Go d'espace disque. Les utilisateurs Windows nécessitent WSL2 avec au moins 12 Go de mémoire. Le Makefile propose des cibles pour démarrer les services, uploader les données, lancer les pipelines et exécuter les tests. URLs accessibles après démarrage: Dashboard (port 3000), docs FastAPI (port 8000), Airflow (port 8080), MinIO Console (port 9001), Spark Master UI (port 8081), HDFS NameNode (port 9870) et YARN (port 8088). ## Structure du dépôt Les répertoires principaux incluent `spark/jobs/` pour les cinq scripts batch PySpark, `spark/streaming/` pour le consommateur Kafka, `kafka/producer/` pour le producteur de replay, `api/` pour le service FastAPI avec ses endpoints routés, `frontend/` pour l'application React, `hadoop/mapreduce/` pour les scripts de jobs streaming, `airflow/dags/` pour l'orchestration, `terraform/` pour les模板 IaC, et `docker/` pour les définitions de services Hadoop et Kafka. Licence: MIT