La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Spark Journées informatiques RI septembre 2016

Présentations similaires


Présentation au sujet: "Spark Journées informatiques RI septembre 2016"— Transcription de la présentation:

1 Spark Journées informatiques RI3 26-29 septembre 2016
Christian Arnault (LAL) Julien Nauroy (DI Upsud)

2 La R&D Spark et LSST Mise en place d’une R&D dans le contexte de l’université Paris-Sud Candidat pour un « Equipements de Recherche Mutualisés » (ERM) Dans le cloud OpenStack (VirtualData + Paris-Sud) Plusieurs domaines d’application: LSST, BIO, … LSST: Etudes de plusieurs cas d’utilisation «Requêtes», et indexation sur un grand nombre de fichier FITS Requêtes 2D WCS Sélection selon les clés des header FITS Production de catalogues de galaxies simulées Étude du processus complet (images, photométrie, astrométrie, production des courbes de lumière) Compréhension de facteurs d’échelle Nombre de workers Distribution du CPU, du disque, de la mémoire Relation avec les base de données, formats de données

3 Nos plateformes Une installation est préparée au CCIN2P3:
Inclus: MondoDB + Spark + HDFS 109 SNLS12 FITS headers ont été installés HDFS => tests sur des requêtes 2D WCS Une installation est utilisable dans le cloud VirtualData (LAL+UPSUD) HDFS/Ceph, OpenStack, Spark + Avro + SciPy + Matplotlib Production de galaxies simulatée (avec l’aide de Johann) => explorer l’histogramming dans le contexte Spark Acquérir de l’expérience avec les algorithmes M.R. Animation d’un groupe d’experts Spark experts dans l’environnement Paris-Saclay (Loops) Mise en place des outils de monitoring/statistiques Spark (Ganglia) CPU, Disk, IO, Memoire

4 Spark Originaire des membres de la Fondation Apache (ex Databricks)
(Hadoop/HDFS) + MapReduce + Spark + DataSets + components associés … tout un écosystème de composants est « Spark capable » pour traiter des formats de données: Text Columnar data SQL, NoSQL Records JSON User-defined types décrits par un schema Schedule et optimise la distribution de: Data blocks vs. CPU vs. Disk vs: Mémoire Algorithmes Map Reduce pilotés par la programmation fonctionnelle et Lambda (Java), Scala, Python, R

5 Hadoop - MapReduce Cœur de Hadoop Beaucoup d’autres outils MAP REDUCE
Un système de fichiers réparti Hadoop Distributed File System (HDFS) Un système de répartition des calculs MapReduce Beaucoup d’autres outils Stockage : Hbase, Parquet, ... Calcul : Hive (SQL), Spark, ... MAP Lecture des données et production de couples (clé, valeur) Les clés servent à organiser les données REDUCE Regroupement des clés et traitement des valeurs

6 Spécificités Spark par rapport à MR
Framework généraliste de calcul distribué Enchaînement de traitements naturel «In memory» lorsque possible Pas d’écriture intermédiaire entre opérations Terasort: performance x30+ Peut utiliser HDFS et YARN (MR2) Également mode autonome

7 Un exemple simple Copie des fichiers dans HDFS (système de fichiers réparti) Cerf Ours Grue Chat Chat Grue Cerf Chat Ours Cerf Ours Grue Chat Chat Grue Cerf Chat Ours

8 Un exemple simple Copie des fichiers dans HDFS (système de fichiers réparti) Etape 1: Map production de (clé, valeur) Cerf , 1 Ours, 1 Grue, 1 Chat, 1 Cerf, 1 Cerf Ours Grue Chat Chat Grue Cerf Chat Ours Cerf Ours Grue Chat Chat Grue Cerf Chat Ours

9 Un exemple simple Copie des fichiers dans HDFS (système de fichiers réparti) Etape 1: Map production de (clé, valeur) Etape 2: regroupement des clés (shuffle & sort) Cerf , 1 Ours, 1 Grue, 1 Chat, 1 Cerf, 1 Ours, 1 Chat, 1 Cerf, 1 Grue, 1 Cerf Ours Grue Chat Chat Grue Cerf Chat Ours Cerf Ours Grue Chat Chat Grue Cerf Chat Ours

10 Un exemple simple Copie des fichiers dans HDFS (système de fichiers réparti) Etape 1: Map production de (clé, valeur) Etape 2: regroupement des clés (shuffle & sort) Etape 3: Reduce – somme des valeurs Cerf , 1 Ours, 1 Grue, 1 Chat, 1 Cerf, 1 Ours, 1 Chat, 1 Cerf, 1 Grue, 1 Ours, 2 Chat, 2 Cerf, 2 Grue, 2 Cerf Ours Grue Chat Chat Grue Cerf Chat Ours Cerf Ours Grue Chat Chat Grue Cerf Chat Ours

11 Un exemple simple Copie des fichiers dans HDFS (système de fichiers réparti) Etape 1: Map production de (clé, valeur) Etape 2: regroupement des clés (shuffle & sort) Etape 3: Reduce – somme des valeurs Etape 4: écriture du résultat Calculs distribuées Calculs distribuées Données distribuées Cerf , 1 Ours, 1 Grue, 1 Chat, 1 Cerf, 1 Ours, 1 Chat, 1 Cerf, 1 Grue, 1 Ours, 2 Chat, 2 Cerf, 2 Grue, 2 Cerf Ours Grue Chat Chat Grue Cerf Chat Ours Ours, 2 Chat, 3 Cerf, 2 Grue, 2 Cerf Ours Grue Chat Chat Grue Cerf Chat Ours

12 Fonctionnement de MapReduce
Découpage des fichiers en blocs (ex: 128 Mo) Bloc 1 2 3 4 5

13 Fonctionnement de MapReduce
Découpage des fichiers en blocs (ex: 128 Mo) Copie des blocs sur plusieurs nœuds Nœud A Nœud B Nœud C Nœud D Nœud E 1 2 3 4 5

14 Fonctionnement de MapReduce
Découpage des fichiers en blocs (ex: 128 Mo) Copie des blocs sur plusieurs nœuds (typiquement 3 copies) Nœud A Nœud B Nœud C Nœud D Nœud E 1 1 1 1 2 3 4 5

15 Fonctionnement de MapReduce
Découpage des fichiers en blocs (ex: 128 Mo) Copie des blocs sur plusieurs nœuds (typiquement 3 copies) Nœud A Nœud B Nœud C Nœud D Nœud E Bloc 1 1 2 1 1 2 2 2 3 4 5

16 Fonctionnement de MapReduce
Découpage des fichiers en blocs (ex: 128 Mo) Copie des blocs sur plusieurs nœuds (typiquement 3 copies) Nœud A Nœud B Nœud C Nœud D Nœud E 1 1 2 1 1 2 2 3 3 2 4 3 3 5 5 4 5 4 4 5

17 Fonctionnement de MapReduce
Découpage des fichiers en blocs (ex: 128 Mo) Copie des blocs sur plusieurs nœuds (typiquement 3 copies) Sélection des nœuds portant les calculs Les données doivent être sur un nœud Nœud A Nœud B Nœud C Nœud D Nœud E 1 1 2 1 1 2 2 3 3 2 4 3 3 5 5 4 5 4 4 5

18 Fonctionnement de MapReduce
Découpage des fichiers en blocs (ex: 128 Mo) Copie des blocs sur plusieurs nœuds (typiquement 3 copies) Sélection des nœuds portant les calculs Les données doivent être sur un nœud Nœud A Nœud B Nœud C Nœud D Nœud E 1 1 2 1 1 2 2 3 3 2 4 3 3 5 5 4 5 4 4 5

19 Fonctionnement de MapReduce
Découpage des fichiers en blocs (ex: 128 Mo) Copie des blocs sur plusieurs nœuds (typiquement 3 copies) Sélection des nœuds portant les calculs Les données doivent être sur un nœud Le nœud ne doit pas être occupé Nœud A Nœud B Nœud C Nœud D Nœud E 1 1 2 1 1 2 2 3 3 2 4 3 3 5 5 4 5 4 4 5

20 Fonctionnement de MapReduce
Découpage des fichiers en blocs (ex: 128 Mo) Copie des blocs sur plusieurs nœuds (typiquement 3 copies) Sélection des nœuds portant les calculs Les données doivent être sur un nœud Le nœud ne doit pas être occupé Nœud A Nœud B Nœud C Nœud D Nœud E 1 1 2 1 1 2 2 3 3 2 4 3 3 5 5 4 5 4 4 5

21 Fonctionnement de MapReduce
Découpage des fichiers en blocs (ex: 128 Mo) Copie des blocs sur plusieurs nœuds (typiquement 3 copies) Sélection des nœuds portant les calculs Les données doivent être sur un nœud Le nœud ne doit pas être occupé Tous les blocs doivent être traités Nœud A Nœud B Nœud C Nœud D Nœud E 1 1 2 1 1 2 2 3 3 2 4 3 3 5 5 4 5 4 4 5

22 Les données dans Spark Resilient Distributed Dataset (RDD) Dataframes
Représentation d’un ensemble de données Distribué (et redistribuable) sur les nœuds Résistant : recalcul à la volée En mémoire lorsque possible (sinon disque) Traitement là où sont les données Dataframes données tabulaires («RDD spécialisé») Lien avec SparkSQL En entrée : Fichiers : locaux, HDFS, S3 ... Bases de données : SQL, noSQL Flux : MQ, Twitter, Kafka ... Manipulation via transformations RDD1 ⇨ RDD2 via transformation Exemples : map, reduce, filtrage En sortie : fichiers, BDD, affichage, etc

23 Workflow Spark nœuds : transformations et actions
Représentation sous forme de graphe Graphe Acyclique Dirigé (DAG) Exécution Affichage, écriture, collecte, ... «Exécution paresseuse» Exemple: Chargement de fichiers => textFile Interprétation de chaque ligne => map Filtrage des entrées incorrectes => filter Création de couples (clé, valeur) = map Calcul valeur max par clé => reduceByKey Collecte et affichage => collect

24 Plus sur les données Le format de données
Spark suppose que les données sont sont structurées selon le schéma généraliste (Clé, Value) Mais, de nombreux mécanismes adaptent les formats spécifiques lorsque les données ne sont pas directement sous cette forme Via une sérialisation Grâce une description JSON, Autres format: CSV, SQL, NoSQL Plusieurs packages associés à Spark permettent de supporter des formats spécifiques: Hive (pour requêtes SQL) MongoDB => headers FITS Parquet (DataSets, DataFrames) (cf HDF5) Avro (sérialisation binaire) => FITS headers

25 Simulation Principe Etude: La structure de données
Les modèles Astrophysiques founissent des fonctions de probabilité (Probability Distribution Functions) de produire une galaxie: D’une certaine magnitude (M) D’un certain type (T) Autour d’un décalage vers le riouge (Z0) Ensuite, le but est de générer un grand nombre de galaxies pour chaque population … pour créer un catalogue ou pour histogrammer Etude: Le workflow Spark Distribution des CPU, des cores, dela mémoire La structure de données Clé complexe = (M, T, Z0) Valeur = PDF (sous la forme tabulaire) Utilisation de PySpark + SciPy, numpy, …

26 (user defined function)
Le workflow Text file Parallelize map (M, T, Z0) generate Output catalogue HDFS (M, T, Z0), PDF Les PDF s Distribue Les PDFs Construction de Clés aléatoires Generation galaxies (user defined function)

27 Résultats Temps (secondes) Overhead d’activation:
Spark + lecture des PDF Nombre de Galaxies 103 107 1011

28 Indexation de fichiers FITS
Fichier FITS Données Image de SLNS12 Structure: 1 HDU (header FITS) par CCD Technologie HDFS + MongoDB Objectif: Indexation 2D Extraction des matrices de transformation WCS du header Pre-calcule le centre de chaque CCD (pixel coords -> WCS coords) MongoDB document = un FITS HDU Inclut les ROI CCD = un 2D Point (valeur indexable) + un angle d’acceptance

29 PyMongo client = pymongo.MongoClient(MONGO_URL) lsst = client.lsst c = lsst.fits c.create_index( [ ('center', '2dsphere') ] ) radius = 1.0 for o in c.find( { 'center' : { '$geoWithin': { '$centerSphere' : [ [ , 53.0 ], radius ] } } } , {'_id':0, 'where':1, 'center':1 } ): print o Selected RA, DEC Bonne efficacité: (170 µs) mais nécessitera plus de mesures

30 Enjeux Quel langage utiluser pour Spark? intégration des données
Scala, Python, R, Java ? Important: on a besoin d’intégrer les librairies scientifiques Scala est plus proche de Spark mais fournit un support plutôt faible aux librairies scientifiques: ~ numpy, ~ matplotlib Mais l’API pour Spark est parfois limitée Les notebook Jupyter/Zeppelin peuvent être très utiles. intégration des données Il existe un ensemble riche de packages associés Soit SQL-orientés Soit JSON-orientés Formats spécifiques Sérialiseurs (AVRO, …) DataFrames, DataSets => Connexion aux formats standards (FITS, HDF5) On pourrait établir des workflows de type pipeline pour convertir (adapter) les données « au vol » Or… ou bien adapter les données aux étapes amont de la production ??

31 Références Hadoop/Spark and HDF5 Map Reduce in astro Spark v2.0 Drill


Télécharger ppt "Spark Journées informatiques RI septembre 2016"

Présentations similaires


Annonces Google