UE INF 2206 - Systèmes distribués
Objectifs
Cette unité d'enseignement introduit les méthodes et les outils disponibles pour formaliser et programmer des algorithmes dans un contexte distribué. Les notions abordées concernent le parallélisme et la répartition, les architectures multi-processeurs, l'algorithmique distribuée, La répartition dans les langages à objets.
Contenu
Cette unité enseignement dresse dans un premier temps un panorama des architectures sur lesquelles sont déployées des applications distribuées et les motivations de cette distribution. Dans un deuxième temps, on étudie et on formalise les solutions existantes pour les problèmes classiques. Dans la troisième partie, on aborde les techniques de programmation fondées sur les processus communicants, en les illustrant sur des outils logiciels standards (Sockets, MPI, RMI). Les espaces de tuples et une implémentation (JavaSpaces) sont étudiés. Enfin un cas concret d'application répartie à très grande échelle est décrit, le système Google, et les outils dérivés, du projet Apache-Hadoop, sont utilisés. Une partie des travaux pratiques est réalisée sur un cluster de machines dédié.
- Parallélisme et distribution : motivations et architectures matérielles
- Algorithmique distribuée
- Communication par passage de messages
- Appels à distance
- Espace de tuples
- Passage à l'échelle
Prérequis
Notions de base en réseau, programmation en C, programmation en Java, concurrence dans les systèmes centralisés.
Bibliographie
- Introduction aux systèmes parallèles et distribués
- Foundations of Multithreaded, Parallel, and Distributed Programming, G.R. Andrews. Addison-Wesley, 2000.
- Distributed Systems, Concepts and Design, G. Coulouris, J. Dollimore, T. Kindberg. Addison-Wesley, 1998.
- Designing and building parallel programs, I. Foster. Addison-Wesley, 1994.
- Introduction to parallel computing, V. Kumar, A. Grama, A. Gupta, G. Karypis. Benjamin/Cummings, 1994.
- The art of parallel programming, B.P. Lester. Prentice Hall, 1993.
- Algorithmes distribués
- Concurrent and Distributed Computing in Java, V. K. Garg. Wiley, 2004.
- Distributed Algorithms, N. A. Lynch. Morgan Kaufmann, 1996.
- Introduction to Distributed Algorithms, G. Tel. Cambridge University Press, 2nd éd., 2000.
- An Introduction to Distributed Algorithms, V. C. Barbosa. MIT Press, 1996.
- Elements of Distributed Systems, V. K. Garg. Wiley, 2002.
- Systèmes répartis et réseaux, Concepts, outils et algorithmes, M. Raynal. Eyrolles, 1987.
- Programmation distribuée en Java
- Java NIO, Ron Hitchens, O'Reilly, 2002
- Java Network Programming, Elliotte Rusty Harold, O'Reilly, 2005
- Programmation par passage de messages
- Parallel programming with MPI, P.S. Pacheco. Morgan Kaufmann, 1997.
- Appels à distance
- Java RMI, William Grosso, O'Reilly, 2002
- Espaces partagés
- JavaSpaces Principles, Patterns, and Practice Eric Freeman, Susanne Hupfer, and Ken Arnold, Prentice Hall, 1999
- Passage à l'échelle
- Hadoop: the Definitive Guide, Tom White, O'Reilly, 2009
- Pro Haddop, Jason Venner, Apress, 2009 Foundations of Multithreaded, Parallel, and Distributed Programming G.R. Andrews. Addison-Wesley, 2000
Intervenants
- Frédéric Raimbault (responsable de l'UE)
- Yves Mahéo
- Luc Courtrai