Skip to content
This repository has been archived by the owner on Jan 13, 2024. It is now read-only.

Latest commit

 

History

History
188 lines (142 loc) · 11.2 KB

td_3a.rst

File metadata and controls

188 lines (142 loc) · 11.2 KB

3A

Eléments logiciels pour le traitement des données massives - OMI309

En cours de rédaction

Cours animé par :

  • Matthieu Durut
  • Xavier Dupré
  • Séance 1 : <td3acenoncesession1rst> (correction <td3acorrectionsession1rst>)
  • Séance 2
    • threads, application multi-threadées
    • variables globales, synchronisation
  • Séance 3
    • Stockage de données, consistence, persistence, impossibilité de faire des rollbacks, corruption, absence de garanties sur la manière dont sont stockés les champs (exemple formats de date), pas d'index, etc.
    • Introduction du SQL, type de requêtes, Notion de transaction, d'atomicité, capacité de rollback, garanties ACID, difficultés dans un SQL réparti (atomicité des transactions, double commit protocol)
    • Systèmes NoSQL, Key-Value Pair Storage, transactionnalité multi-entités dans un Key-Value pair, écriture optimiste avec des timestamps.
    • Base de données orientées Document, Bases de données orientées Graph
    • Map/Reduce. Notions de mappers, de reducers, de calculs embarassingly parallel. problèmes des machines mortes, des stragglers, tradeof calcul/transfert des données, exemples d'applications de MapReduce, exemples d'algos difficilement parallélisables,
    • Hadoop, Azure
    • Queues distribuées.
  • Séance 4
    • distribuer un traitement de données à différent niveaux
      • avec un langage haut niveau (comme PIG)
      • utilisation du java pour distribuer un job de façon plus optimisée
      • distribution personnalisée d'un traitement avec des librairies bas niveau (type MPI)
  • Séance 5
    • algorithme distribué, descente de gradient distributé
    • exemple des k-means distribué
    • GPU

Les trois séances suivantes sont plus appliquées et dédiées à la découverte de Hadoop, un environnement qui permet d'exécuter des tâches Map/Reduce. Plusieurs angles d'approche sont possibles. Celle retenue est l'utilisation du langage PIG-latin dont la logique ressemble beaucoup à celle du SQL. Les outils Python1 simplifient la communication avec le cluster.

  • Séance 6 : premier job Map/Reduce
  • Séance 7 : PIG, JSON, streaming
    • PIG et JSON <td3acenoncesession7arst> (correction <td3acorrectionsession7arst>) (avec Azure)

Le cours sera évalué avec un projet informatique <l-projinfo3a>.

Getting started

La plupart des modules requis sont inclus dans la distribution Anaconda de Python. A ceux-ci, il faut ajouter :

Les deux modules suivantes introduisent les commandes magiques utilisées dans les notebooks :

Il faudra également installer (pour Cloudera uniquement) :

Ces modules sont plus faciles à installer avec Anaconda (commande conda install paramiko, lire install extra packages). Le module pymyinstall (voir l-install), il suffit d'exécuter :

from pymyinstall import datascientist
datascientist("install", azure = True)

Liens :

Bibliographie

Articles

Livres

MOOC

Liens

Revue de presse

td_3a_enonce td_3a_correction specials/azure

Footnotes


  1. C'est l'objet du paragraphe l-td3a-start.

  2. Les exercices des notebooks s'appuient sur le langage PIG-latin qui est un langage haut niveau permettant d'écrire des tâches Map Reduce complexes. Le script est ensuite converti en un ensemble de mapper / reducer. Ce langage suffit dans la plupart des cas et le temps de développement est très réduit par rapport à un langage plus bas niveau. L'autre langage haut niveau est Hive. Sa syntaxe est très proche de celle du SQL. PIG a été choisi car Hive est plus un moyen de lancer rapidement de petites tâches, PIG permet des tâches plus conséquentes pour un coût d'apprentissage très raisonnable.