École "Programmation Fonctionnelle et Spark"
De nouveaux outils s’installent dans le paysage de la gestion des ressources du calcul distribué et du parallélisme (Hadoop, Spark, MongoDb …), sous l’impulsion des grands acteurs du Big Data (Google, Amazon …). Tous ces outils et ces plateformes reposent sur des paradigmes, soit relativement nouveaux, soit plus anciens mais qui s'installent maintenant très largement dans le monde informatique global.
Ces paradigmes, programmation fonctionnelle et architectures MapReduce, prennent une place incontournable dans la pratique informatique et dans l’émergence des DataSciences. L’éco-système Spark s'appuie sur ces concepts et se propage largement depuis quelques années dans l’environnement scientifique académique en devenant incontournable.
Notre communauté scientifique n’échappe pas à ce mouvement : les grandes masses de données, la complexité des algorithmes, les DataSciences, les architectures matérielles de calcul (distribuées, parallèles) imposent une nouvelle façon de penser l’architecture et la programmation des applications.
Description et objectifs de l'école
Cette école se concentrera donc sur deux aspects clés de ces objectifs :
- la programmation fonctionnelle et les patrons d'architecture MapReduce
- l’application à l’éco-système Spark pour les données scientifiques
La programmation fonctionnelle est désormais accessible dans la plupart des langages couramment pratiqués dans nos communautés scientifiques (C++, Python, Java, Scala …). Nous allons nous consacrer essentiellement au langage Scala qui permet efficacement d’intégrer les approches fonctionnelles ainsi que les paradigmes clés associés : non-mutabilité, mécanismes de compréhension, les itérateurs …
L’architecture MapReduce structure une application en termes de chaînes de processus où chaque processus va appliquer une opération de transformation, de réduction, de filtrage sur un bloc de données et où les concepts de la programmation fonctionnelle vont naturellement être exploités.
C'est autour d'une architecture distribuée basée sur Spark que ces concepts vont très naturellement s'appliquer, en particulier dans le monde des applications scientifiques (production ou analyse des données).
L’objectif pédagogique devra donc être d’apprendre à repenser, à restructurer une application scientifique traditionnelle (calcul, analyse) autour d’une architecture MapReduce et en l’appliquant au contexte Spark.
Cette formation s’adresse à des personnes fortement impliquées dans la conception et/ou la programmation d’applications scientifiques (ingénieurs ou chercheurs), envisageant une application pratique de ces concepts.
Par ailleurs, la présence à cette école pourra pourra donner lieu à une attestation de suivi.
Prérequis:
- pratique d’un ou de plusieurs langages de programmation dans le domaine des applications scientifiques (C++, Python, Java)
- pratique de la programmation orientée objet
- la connaissance des librairies scientifiques de base (en particulier NumPy) sera une aide.
Format de l'école:
- deux modules de 3 + 3 jours combinant à part égale une approche théorique et des exercices pratiques
- un module sur les fondamentaux (Programmation fonctionnelle + MapReduce)
- un module sur l’application à Spark
- les deux modules sont disjoints mais pas indépendants.
- Les bénéfices du deuxième module (Spark) seront maximum lorsque la maîtrise de la programmation fonctionnelle en Scala (premier module) sera acquise.
Dates:
- premier module: 15-16-17 janvier 2018
- deuxième module: 29-30-31 janvier 2018
Localisation:
- Laboratoire de l'Accélérateur Linéaire Orsay (LAL) Orsay
Centre Scientifique d’Orsay Bâtiment 200 - BP 34 91898 Orsay cedex - France Téléphone : +33(0)1 64 46 83 00
Logistique:
- L'hébergement et le repas est à la charge des stagiaires
- Accueil maximum de 40 stagiaires (en binômes)
- Les TD se feront sur les machines locales (Mac) déjà configurées (mais possibilité d'apporter son portable)
Critères sur la priorité en cas de surnombre:
- date de demande de candidature
- prérequis: pratique de la programmation objet
- 2ème prérequis léger: connaissance de java
- est-ce que cette demande est motivée par un projet?
Christian Arnault, Eric Maldonado, Antoine Pérus