BGD701 — Big Data

Introduction et organisation

Rémi Sharrock

Télécom Paris — Mastère Spécialisé

Aujourd’hui

  1. Comment ce cours fonctionne
  2. Ce que vous allez construire
  3. Comment vous serez évalués
  4. Séance 1

Le support est en ligne. Il sera autorisé pendant les évaluations.

À qui s’adresse ce cours

Vous êtes en Mastère Spécialisé, souvent en reconversion.

Aucun prérequis en réseau ni en systèmes distribués. Deux choses seulement :

  • écrire un petit programme Python ;
  • ouvrir un terminal et lancer une commande.

Tout le reste sera construit devant vous.

La philosophie : from scratch

Deux chemins

L’autre cours

Installer et manipuler Hadoop.

Utiliser un outil qui fait tout.

Ce cours

Reconstruire les briques de base.

Comprendre ce qu’il y a derrière.

Deux approches complémentaires. Nous prenons le chemin inverse.

Ce que vous allez écrire

  • Un serveur et un client réseau, en trente lignes
  • Un protocole qui transporte des messages sans les mélanger
  • Un programme qui interroge cent machines en parallèle
  • Un MapReduce complet, puis distribué

Uniquement avec la bibliothèque standard de Python.

Pourquoi

Un jour, vous verrez passer ceci :

shuffle failed

connection reset by peer

Vous saurez ce qui se passe derrière. Parce que vous l’aurez écrit.

Organisation

Huit séances de 2 × 1 h 30

Séance À la fin, vous savez…
1 Pourquoi distribuer ? Premiers sockets écrire un client et un serveur TCP
2 Serveurs concurrents servir NN clients, interroger NN machines
3 Les limites de TCP, les protocoles découper un flux d’octets en messages
4 Évaluation 1 — 3 h séances 1 à 3

Huit séances de 2 × 1 h 30

Séance À la fin, vous savez…
5 Architectures des systèmes de données réplication, partitionnement, pannes, split brain, CAP, HDFS et Kafka
6 MapReduce sur une machine écrire un MapReduce en Python
7 MapReduce distribué et performance répartir sur NN machines, loi d’Amdahl
8 Évaluation 2 — 3 h tout le cours

Rien à rendre

Pas de projet. Pas de rapport. Pas de soutenance.

Votre note vient des deux évaluations, et d’elles seules.

En contrepartie : faites les exercices en séance. Les évaluations demandent d’adapter exactement ce type de code.

Les évaluations

Conditions

Sur machine, en salle de TP, séances 4 et 8.

  • 3 h, la séance entière
  • Pas d’Internet, pas d’IA
  • Réseau coupé : tout tourne en 127.0.0.1, sur plusieurs ports
  • Le cours est autorisé, vos notes manuscrites aussi

D’où un cours qui contient tout le code dont vous pouvez avoir besoin.

Notation

Questions écrites

10 points

Comprendre, expliquer, diagnostiquer.

Programmation

10 points

Écrire du code qui tourne.

Vous rendez un seul fichier texte : réponses et code, dans un format balisé imposé.

Détaillé en séance 4. Vous vous y entraînerez dès les examens blancs.

Examens blancs

Séances 4 et 8 : un examen blanc complet, avec corrigé. Même durée, même structure, même barème que le sujet réel.

Le contenu du sujet réel sera différent

Apprendre le corrigé par cœur ne servira à rien.

Ce qui est évalué : adapter le code du cours à une spécification que vous découvrez, et justifier vos choix.

Attendez-vous à un protocole dont le format n’est pas celui du cours.

L’IA dans ce cours

J’ai des licences GitHub Copilot

Accès aux modèles les plus récents. Demandez-en une :

Outils remarquables, que vous utiliserez professionnellement. Reste à savoir quoi en faire pendant un cours.

Apprendre, c’est faire soi-même

La cognition s’active quand vous écrivez le code, quand vous vous trompez, quand vous cherchez l’erreur.

Pas quand vous validez d’un coup d’œil ce qu’une machine a produit.

Les évaluations sont sans IA et sans réseau

Il faut savoir tout écrire à la main. Si vous avez délégué les exercices, vous vous en apercevrez le jour J.

Pour apprendre, pas pour produire

À faire À éviter
« Explique-moi pourquoi recv renvoie moins d’octets » « Écris-moi l’exercice 1.3 »
« Que fait SO_REUSEADDR exactement ? » Accepter une complétion sans la lire
« Voici mon erreur, aide-moi à comprendre » « Corrige mon code »

Et de toute façon : tous les corrigés sont dans le cours. Vous n’avez pas besoin d’une IA pour faire les exercices.

Le support

Le site

  • Une page par séance, avec moteur de recherche
  • Une version hors ligne en un fichier : cours-complet.html

C’est cette version qui sera sur les machines le jour des évaluations.

Quatre encadrés

Note

Une précision, un complément.

À retenir

L’essentiel de la section.

Attention

Un piège classique. Souvent des questions d’examen.

Pourquoi c’est important

Le pourquoi derrière le comment.

Le code se copie

Bouton de copie en haut à droite de chaque bloc. L’indentation est préservée.

def recevoir_exactement(sock, nb_octets):
    """Lit exactement nb_octets, ou leve une exception."""
    morceaux = b""
    while len(morceaux) < nb_octets:
        morceau = sock.recv(nb_octets - len(morceaux))
        if not morceau:
            raise ConnectionError("Connexion fermee prematurement")
        morceaux += morceau
    return morceaux

Celle-ci, vous la connaîtrez par cœur avant la fin du cours.

Ce qu’il vous faut

  • Python 3.8+ — python3 --version
  • Un éditeur, un terminal
  • Un accès SSH aux machines de l’école (séances 2 et 7)

Aucune bibliothèque externe :

socket · threading · json · struct · multiprocessing · hashlib

Des questions ?