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>
)- liste chaînées, stack, queue, dictionnaire
- graphe BFS, DFS
- merge sort, quicksort, heapsort, max heap
- 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)
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
- ENSAE 3A - Map/Reduce en pratique
- Exercice recommandé : SQL Magic Commands with SQLite in a Notebook
- Travaux pratiques
- Cloudera -
Séance 6 : <td3acenoncesession6rst>
(correction <td3acorrectionsession6rst>
) - Azure HDInsight -
Séance 6 : <td3acenoncesession6brst>
(correction <td3acorrectionsession6brst>
)
- Cloudera -
- Séance 7 : PIG, JSON, streaming
PIG et JSON <td3acenoncesession7arst>
(correction <td3acorrectionsession7arst>
) (avec Azure)
Le cours sera évalué avec un projet informatique <l-projinfo3a>
.
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 :
- pyquickhelper
- pyensae (version >= 1.0)
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 :
Articles
- CUBE and ROLLUP: Two Apache Pig Functions That Every Data Scientist Should Know
- How to Read and Write JSON-formatted Data With Apache Pig
- What Every Data Scientist Needs to Know about SQL
- Large Scale Distributed Deep Networks, Jeffrey Dean, Greg S. Corrado, Rajat Monga, Kai Chen, Matthieu Devin, Quoc V. Le, Mark Z. Mao, Marc'Aurelio Ranzato, Andrew Senior, Paul Tucker, Ke Yang, Andrew Y. Ng
- Stochastic Gradient Descent Tricks, Léon Bottou
- A Fast Distributed Stochastic Gradient Descent Algorithm for Matrix Factorization, Fanglin Li, Bin Wu, Liutong Xu, Chuan Shi, Jing Shi
- Parallelized Stochastic Gradient Descent, Martin A. Zinkevich, Markus Weimer, Alex Smola, Lihong Li
- Topic Similarity Networks: Visual Analytics for Large Document Sets, Arun S. Maiya, Robert M. Rolfe
- Low-dimensional Embeddings for Interpretable Anchor-based Topic Inference, Moontae Lee, David Mimno
- K-means on Azure, Matthieu Durut, Fabrice Rossi
- Efficient Estimation of Word Representations in Vector Space, Tomas Mikolov, Kai Chen, Greg Corrado, Jeffrey Dean, Distributed Representations of Words and Phrases and their Compositionality, Tomas Mikolov, Ilya Sutskever, Kai Chen, Greg S Corrado, Jeff Dean, word2vec Parameter Learning Explained, Xin Rong, Tutorial on Auto-Encoders, Piotr Mirowski
Livres
- Thinking in C++, Bruce Eckel
- Effective C++, Scott Meyers
- What Every Programmer Should Know About Memory, Ulrich Drepper
- The Art of Multiprocessor Programming, Maurice Herlihy, Nir Shavit
- Hadoop: The Definitive Guide, 2nd Edition, Tom White (voir aussi GitHub)
- Hadoop in Practice, Alex Holmes
- Data-Intensive Text Processing with MapReduce, Jimmy Lin, Chris Dyer
- Introducing Microsoft Azure HDInsight, Avkash Chauhan, Valentine Fontama, Michele Hart, Wee Hyong Tok, Buck Woody
- An Introduction to GPGPU Programming - CUDA Architecture, Rafia Inam
MOOC
Liens
- HackerRank
- 15+ Great Books for Hadoop
- A Roundup of Recent Text Analytics and Vis Work
l-azurep
- Don't use Hadoop - your data isn't that big
- Remote Notebook with Azure
- Mahout 1.0 Features by Engine
Revue de presse
td_3a_enonce td_3a_correction specials/azure
Footnotes
C'est l'objet du paragraphe
l-td3a-start
.↩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.↩