Acquis d'apprentissage visés
- Identifier et analyser les problèmes de passage à l’échelle (scalability) liés aux projets mobilisant de larges volumes de données
- Concevoir et mettre en œuvre une architecture distribuée adaptée au stockage et au traitement de données massives
- Appliquer les paradigmes de programmation parallèle et distribuée (MapReduce, Spark) pour résoudre des problèmes de traitement à grande échelle
- Définir, mettre en œuvre et utiliser une analyse descriptive et prédictive en exploitant des données massives
- Évaluer et comparer les performances d’algorithmes parallèles et distribués en tenant compte des contraintes matérielles et architecturales
Prérequis
- Probabilités et variables aléatoires (S5) : distributions, espérance, variance — bases statistiques pour l’analyse et l’échantillonnage de données massives.
- Processus stochastiques (S6) : modélisation de flux de données et de séries temporelles.
- Fouille de données (S6) : algorithmes de clustering, classification, association — directement mobilisés sur des volumes distribués.
- Apprentissage automatique (S7, parallèle) : modèles prédictifs et pipelines ML à intégrer dans les architectures Big Data.
- Compétences transversales attendues :
- Programmation Python (pandas, NumPy) et notions de programmation fonctionnelle
- Maîtrise du terminal Linux et des commandes de base (fichiers, processus, réseau)
- Notions d’algorithmique et de complexité (notation grand O)
- Compréhension des architectures client-serveur et des bases de données relationnelles
- Lecture de documentation technique en anglais
Programme
- Problèmes de facteur d’échelle :
- La nécessité de mesurer dans le contexte du Big Data : taille, capacité, débit et latence.
- Conséquences de la croissance rapide des données sur le calcul et le stockage.
- Modèles de complexité adaptés aux systèmes distribués ; nécessité de privilégier la simplicité architecturale.
- Approches de coordination entre entités de calcul ; évolutivité horizontale et verticale.
- Architectures matérielles pour le Big Data :
- Mécanismes d’entrée/sortie rapide et efficace ; hiérarchie mémoire et cohérence de cache.
- Architectures de calcul parallèle : multicœur, GPU, grid computing, mémoire partagée et distribuée, traitement vectoriel.
- Taxonomie de Flynn (SISD, SIMD, MISD, MIMD) et implications pour le choix architectural.
- Hiérarchie de stockage parallèle ; considérations d’optimisation des instructions.
- Frameworks pour le calcul distribué :
- Classification des modèles de calcul parallèle et distribué.
- Hadoop et l’écosystème HDFS / YARN ; paradigme MapReduce.
- Apache Spark : RDD, DataFrames, Spark SQL, Spark Streaming.
- Systèmes de messagerie distribuée : Apache Kafka pour les flux de données en temps réel.
- Interaction des processus : communication, coordination, tolérance aux pannes.
- Stockage de données distribuées :
- Approches de stockage distribué : HDFS, object storage (S3), bases NoSQL (HBase, Cassandra, MongoDB).
- Garantir la qualité des données : cohérence, nettoyage, représentativité.
- Théorème CAP et compromis cohérence / disponibilité / tolérance aux partitions.
- Techniques de passage à l’échelle : hachage consistant, partitionnement, réplication, sharding.
- Sauvegarde, archivage et récupération des données.
- Programmation parallèle et distribuée :
- Concurrence, parallélisme et systèmes distribués : différences et cas d’usage.
- Loi d’Amdahl et loi de Gustafson : limites théoriques du parallélisme.
- Algorithmes parallèles : équilibrage de charge, décomposition par tâches et par données.
- Complexité des algorithmes parallèles et distribués ; gestion des états et des effets de bord.
- Pipelines de données et traitement en flux :
- Architecture Lambda et architecture Kappa : traitement par lots (batch) et en flux (stream).
- Orchestration de pipelines de données : Apache Airflow.
- Cas d’usage : ingestion, transformation, agrégation et visualisation de données massives.
Modalités d'évaluation
Contrôles continus et travaux pratiques évalués.
Bibliographie
- Sakr, S. & Zomaya, A. Y. (Eds.) - Encyclopedia of Big Data Technologies - Springer International Publishing, 2019
- Tom White - Hadoop: The Definitive Guide - O’Reilly, 4^(e) éd., 2015
- Bill Chambers & Matei Zaharia - Spark: The Definitive Guide - O’Reilly, 2018
- Martin Kleppmann - Designing Data-Intensive Applications - O’Reilly, 2017
- Jimmy Lin & Chris Dyer - Data-Intensive Text Processing with MapReduce - Morgan & Claypool, 2010
- Documentation Apache Spark : <https://spark.apache.org/docs/latest/>
- Documentation Apache Kafka : <https://kafka.apache.org/documentation/>
- Documentation Apache Hadoop : <https://hadoop.apache.org/docs/stable/>
- Documentation Apache Airflow : <https://airflow.apache.org/docs/>
Supports
Diaporamas, fiches de travaux dirigés et de travaux pratiques.