Traitement des données distribuées


Objectif

L’objectif de ce cours est d’introduire de façon théorique et pratique les aspects du traitement
des données de façon distribuée. Une introduction à la programmation fonctionnelle et son lien
étroit avec les traitements distribués est présentée. Le langage Scala et le framework Apache
Spark permettront son application pratique. Le cours s’adresse aux élèves ayant déjà une
expérience en programmation avec un langage statiquement typé (C++, Java, C#) et souhaitant
comprendre le fonctionnement sous-jacent des outils permettant le stockage et le traitement
des données massives.

Evaluation :

Le cours sera évalué sous la forme d’un projet informatique. L’accent sera mis sur la qualité du
code, la fiabilité et le passage à l’échelle de la solution implémentée.

Plan

  1. Éléments de programmation fonctionnelle avec Scala
    a. Philosophie de l'approche fonctionnelle
    b. Type, expression et fonction d’ordre supérieur
    c. Polymorphisme et typage avancé
    d. Structures de données immuables et filtrage par motif
  2. Fondations des systèmes d’information
    a. Caractéristiques désirées (fiabilité, passage à l’échelle, maintenabilité)
    b. Modèles de données et langages de requête
    c. Stockage et encodage
  3. Données distribuées
    a. Réplication
    b. Partionement
    c. Limitations et trade-offs dans les systèmes distribués
  4. Utilisation d’Apache Spark pour le traitement batch distribué
    a. Systèmes de fichiers distribué
    b. Map / Shuffle / Reduce
    c. Variables RDD et Broadcast
    d. Dataframes
  5. (Optionnel) Traitement temps réel distribué
    a. Message brokers
    b. Bases de données et flux des écritures
    c. Traitement des flux avec Apache Beam

Références

  •  Designing Data-Intensive Application, Martin Kleppmann
  •  Functional Programming in Scala, Paul Chiusano and Runar Bjarnason