Certificat Big Data - Master MAthématiques



Documents pareils
Introduction à MapReduce/Hadoop et Spark

Hadoop : une plate-forme d exécution de programmes Map-Reduce

Hadoop : une plate-forme d exécution de programmes Map-Reduce

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

MapReduce et Hadoop. Alexandre Denis Inria Bordeaux Sud-Ouest France ENSEIRB PG306

Cloud Computing MapReduce Année académique 2014/15

Map-Reduce : un cadre de programmation parallèlle pour l analyse de grandes données. Stéphane Genaud ENSIIE

Notes de cours Practical BigData

Introduction à Hadoop & MapReduce

4 Exemples de problèmes MapReduce incrémentaux

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Programmation parallèle et distribuée (Master 1 Info )

Programmation parallèle et distribuée

MapReduce. Nicolas Dugué M2 MIAGE Systèmes d information répartis

Programmation parallèle et distribuée

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS

Introduc)on à Map- Reduce. Vincent Leroy

7 Développement d une application de MapReduce

Fouillez facilement dans votre système Big Data. Olivier TAVARD

Programmation Par Objets

Hadoop, Spark & Big Data 2.0. Exploiter une grappe de calcul pour des problème des données massives

Hadoop / Big Data MBDS. Benjamin Renaut <renaut.benjamin@tokidev.fr>

Implémentation parallèle de certains algorithmes de fouille de données avec le framework MapReduce

Big Data Concepts et mise en oeuvre de Hadoop

Introduction aux algorithmes MapReduce. Mathieu Dumoulin (GRAAL), 14 Février 2014


Plan du cours. Historique du langage Nouveautés de Java 7

Auto-évaluation Programmation en Java

Déploiement d une architecture Hadoop pour analyse de flux. françois-xavier.andreu@renater.fr

Prototypage et évaluation de performances d un service de traçabilité avec une architecture distribuée basée sur Hadoop

Labs Hadoop Février 2013

Prototypage et évaluation de performances d un service de traçabilité avec une architecture distribuée basée sur Hadoop

Programmer en JAVA. par Tama

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin Talend

Cartographie des solutions BigData

Développement Logiciel

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Ricco Rakotomalala R.R. Université Lyon 2

NoSQL. Introduction 1/30. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

Acquisition des données - Big Data. Dario VEGA Senior Sales Consultant

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Un ordonnanceur stupide

Synchro et Threads Java TM

Package Java.util Classe générique

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Sommaire. 3. Les grands principes de GFS L architecture L accès de fichier en lecture L accès de fichier en écriture Bilan

Les technologies du Big Data

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Traduction des Langages : Le Compilateur Micro Java

La technologie Java Card TM

BIG DATA en Sciences et Industries de l Environnement

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Département Informatique 5 e année Hadoop: Optimisation et Ordonnancement

Cours 8 Not Only SQL

Panorama des solutions analytiques existantes

INEX. Informatique en Nuage : Expérimentations et Vérification. Livrable n M2.1 ÉTUDE ET PARALLÉLISATION. Jérôme Richard

Chapitre 10. Les interfaces Comparable et Comparator 1

TP1 : Initiation à Java et Eclipse

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS

Importation et exportation de données dans HDFS

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

HADOOP ET SON ÉCOSYSTÈME

Projet gestion d'objets dupliqués

Big Data : utilisation d un cluster Hadoop HDFS Map/Reduce HBase

Remote Method Invocation (RMI)

Bases de Données NoSQL

Projet de programmation (IK3) : TP n 1 Correction

M2 GL UE DOC «In memory analytics»

Formation Cloudera Data Analyst Utiliser Pig, Hive et Impala avec Hadoop

L écosystème Hadoop Nicolas Thiébaud Tuesday, July 2, 13

R+Hadoop = Rhadoop* Des logiciels libres complémentaires, une implémentation, une réponse au nouveau paradigme du bigdata!

Web Tier : déploiement de servlets

Fouille de données massives avec Hadoop

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Corrigé des exercices sur les références

as Architecture des Systèmes d Information

Big Graph Data Forum Teratec 2013

Livre. blanc. Solution Hadoop d entreprise d EMC. Stockage NAS scale-out Isilon et Greenplum HD. Février 2012

Avant-propos. Organisation du livre

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

Environnements de développement (intégrés)

TP3 : Manipulation et implantation de systèmes de fichiers 1

Flux de données Lecture/Ecriture Fichiers

Our experience in using Apache Giraph for computing the diameter of large graphs. Paul Bertot - Flavian Jacquot

Technologies du Web. Ludovic DENOYER - ludovic.denoyer@lip6.fr. Février 2014 UPMC

Chapitre VI- La validation de la composition.

Une introduction à Java

Objets et Programmation. origine des langages orientés-objet

Alfstore workflow framework Spécification technique

Transcription:

1 / 1 Certificat Big Data - Master MAthématiques Master 2 Auteur : Sylvain Lamprier UPMC

Fouille de données et Medias Sociaux 2 / 1 Rich and big data: Millions d utilisateurs Millions de contenus Multimedia (texte, image, videos, etc...) Millions de connections et relations (de differents types) Preferences, tendences, opinions,... Analyse réseau social Traitements à large échelle Taille des données Complexité des données Dynamicité Données + Traitements distribués

Traitement Distribué 3 / 1 Hadoop Map Reduce API Java Echaînement de jobs Exemples de tâches MapReduce itérées Mise en oeuvre sur Hadoop Spark

Traitement distribué 4 / 1 Apache Hadoop Framework distribué Utilisé par de très nombreuses entreprises Traitements parallèles sur des clusters de machines Amener le code aux données Système de fichiers HDFS Système de fichiers virtuel de Hadoop Conçu pour stocker de très gros volumes de données sur un grand nombre de machines Permet l abstraction de l architecture physique de stockage Réplication des données

Map Reduce 5 / 1 Exécution d un problème de manière distribuée Découpage en sous-problèmes Execution des sous-problèmes sur les différentes machines du cluster Stratégie algorithmique dite du Divide and Conquer Deux étapes principales : Map: Emission de paires <clé,valeur> pour chaque donnée d entrée lue Reduce: Regroupement des valeurs de clé identique et application d un traitement sur ces valeurs de clé commune

Map Reduce 6 / 1 Composants d un processus Map Reduce: 1 Split: Divise les données d entrée en flux parallèles à fournir aux noeuds de calcul. 2 Read: Lit les flux de données en les découpant en unités à traiter. Par défaut à partir d un fichier texte: unité = ligne. 3 Map: Applique sur chaque unité envoyé par le Reader un traitement de transformation dont le résultat est stocké dans des paires <clé,valeur>. 4 Combine: Composant facultatif qui applique un traitement de reduction anticipé à des fins d optimisation. Cette étape ne doit pas perturber la logique de traitement. 5...

Map Reduce 7 / 1 Composants d un processus Map Reduce: 1... 2 Group: Regroupement (ou shuffle) des paires de clés communes. Réalisé par un tri distribué sur les différents noeuds du cluster. 3 Partition: Distribue les groupes de paires sur les différents noeuds de calcul pour préparer l opération de reduction. Généralement effectué par simple hashage et découpage en morceaux de données de tailles égales (dépend du nombre de noeuds Reduce). 4 Reduce: Applique un traitement de réduction à chaque liste de valeurs regroupées. 5 Write: Écrit le resultat du traitement dans le(s) fichier(s) résultats(s). On obtient autant de fichiers resultats que l on a de noeuds de reduction.

Map Reduce 8 / 1

Map Reduce 9 / 1

Hadoop Map Reduce 10 / 1 Hadoop : Framework Java Elements centraux: Interface Writable : types de données Class InputFormat<K,V> : format d entrée Class Mapper<KI,VI,KO,VO> : opération de Mapping Class Reducer<KI,VI,KO,VO> : opération de Reduction Class OutputFormat<K,V> : format de sortie

Map Reduce: Writable 11 / 1 Interface Writable : types de données Format d échange des différents composants MapReduce Hadoop nativement des classes d écriture pour les types primitifs int IntWritable long LongWritable float FloatWritable boolean BooleanWritable String Text... Pour les autres types : étendre soi-même Writable en redéfinissant readfields(datainput in) : définit la manière de lire la donnée dans un flux d entrée in write(dataoutput out) : définit la manière d écrire la donnée dans un flux de sortie out

Hadoop Map Reduce: Writable 12 / 1 Exemple Writable : Point3D p u b l i c class Point3D implements W r i t a b l e { p u b l i c f l o a t x, y, z ; p u b l i c Point3D ( f l o a t x, f l o a t y, f l o a t z ) { t h i s. x = x ; t h i s. y = y ; t h i s. z = z ; } public void write ( DataOutput out ) throws IOException { out. w r i t e F l o a t ( x ) ; out. w r i t e F l o a t ( y ) ; out. w r i t e F l o a t ( z ) ; } } p u b l i c void readfields ( DataInput i n ) throws IOException { x = i n. readfloat ( ) ; y = i n. readfloat ( ) ; z = i n. readfloat ( ) ; }

Hadoop Map Reduce: InputFormat 13 / 1 Class InputFormat<K,V> : format d entrée Les données d entrée sont découpées en unités de traitement Définit : Les fichiers à utiliser en entrée La manière de découper les données d entrée en blocs (définit le nombre de tâches map à executer) La manière de découper les blocs d entrée en unité de traitement (définit le nombre d itérations séquentielles de chaque tâche Map)

Hadoop Map Reduce: InputFormat 14 / 1 InputFormat standards : TextInputFormat: Données textuelles Découpage par ligne Clé: L offset de la line Valeur: La ligne textuelle KeyValueInputFormat Données textuelles Découpage par ligne Clé: Tout le texte qui précède la 1ière tabulation Valeur: Le reste de la line SequenceFileInputFormat Données binaires produites par Hadoop (SequenceFileOutputFormat) Découpage par couples définis dans le format Clé - Valeur: objets Writable sérialisés Les trois formats découpent les entrées en blocs de 64Mo Correspond à la taille des blocs sur HDFS Modifiable selon les paramètres mapred.min.split.size et mapred.max.split.size

Hadoop Map Reduce: InputFormat 15 / 1

Hadoop Map Reduce: InputFormat 16 / 1 Définition de FileInputFormat Personnalisés Hériter de FileInputFormat<K,V> Une méthode à redéfinir: createrecordreader(inputsplit,taskattemptcontext) : crée le lecteur d entrée Si on ne souhaite pas que le fichier soit découpé en plusieurs blocs : Redéfinir issplitable(jobcontext context, Path file) pour qu elle retourne false

Hadoop Map Reduce: RecordReader 17 / 1 Définit la manière dont on lit les entrées Un InputSplit est un bloc de traitement...... que l on doit lire par unités Problème : Les frontières des unités ne coincident pas toujours avec les frontières des blocs (ex: unité = ligne v.s. bloc=64mo) Le Reader termine la lecture de l unité sur le bloc suivant. Attention à bien respecter cette logique lors de la définition d un Reader personnalisé.

Hadoop Map Reduce: Mapper 18 / 1 Pour chaque unité de traitement Emission d une paire clé-valeur Hériter de Mapper<Kin,Vin,Kout,Vout> Exemple de Mapper: WordCount public class WordCountMapper extends Mapper<Object, Text, Text, IntWritable > { p r i v a t e s t a t i c f i n a l I n t W r i t a b l e ONE=new I n t W r i t a b l e ( 1 ) ; } protected void map( Object o f f s e t, Text value, Context context ) throws IOException, InterruptedException { StringTokenizer tok=new StringTokenizer ( value. t o S t r i n g ( ), " " ) ; while ( tok. hasmoretokens ( ) ) { Text word=new Text ( tok. nexttoken ( ) ) ; context. w r i t e ( word, ONE) ; } }

Hadoop Map Reduce: Reducer 19 / 1 Pour chaque clé émise par le Mapper Réduction de la liste de valeurs associées Emission d un résultat Clé-Valeur Hériter de Reducer<Kin,Vin,Kout,Vout> Exemple de Reducer: WordCount public class WordCountReducer extends Reducer<Text, IntWritable, Text, Text > { public void reduce ( Text key, Iterable <IntWritable > values, Context context ) throws IOException, InterruptedException { I t e r a t o r < I n t W r i t a b l e > i =values. i t e r a t o r ( ) ; i n t count =0; while ( i. hasnext ( ) ) count+= i. next ( ). get ( ) ; context. w r i t e ( key, new Text ( count +" occurences. " ) ) ; } }

Hadoop Map Reduce: OutputFormat 20 / 1 Class OutputFormat<K,V> : format de sortie Les résultats du MapReduce sont écrites dans la sortie selon Le support de sortie Le format de sortie (texte, binaire, etc..) Le type de compression

Hadoop Map Reduce: OutputFormat 21 / 1

Hadoop Map Reduce: OutputFormat 22 / 1 Correspondance entre InputFormat et OuputFormat: TextOutputFormat KeyValueInputFormat SequenceOutputFormat SequenceInputFormat SequenceOutputFormat<K,V> Format de sortie du Mapper Permet de serialiser divers types d objects que l on pourra deserialiser par un SequenceInputFormat Différents types de compression permis (record ou block compression) Produit des fichiers facilement splittable améliore les performances d un traitement par un futur nouveau job MapReduce

Hadoop Map Reduce 23 / 1 Exemple de Création d un Job public s t a t i c Job createjob ( String in, String out ) throws IOException { Configuration conf=new Configuration ( ) ; Job job=job. getinstance (new Cluster ( conf ), conf ) ; job. setjarbyclass ( Test. class ) ; SequenceFileInputFormat. addinputpath ( job, new Path ( in ) ) ; job. setinputformatclass ( SequenceFileInputFormat. class ) ; job. setmapperclass ( TestMapper. class ) ; job. setmapoutputkeyclass ( Text. class ) ; job. setmapoutputvalueclass ( Point3D. class ) ; job. setcombinerclass ( TestReducer. class ) ; job. setreducerclass ( TestReducer. class ) ; job. setnumreducetasks ( 3 ) ; SequenceFileOutputFormat. setoutputpath ( job, new Path ( out ) ) ; job. setoutputformatclass ( SequenceFileOutputFormat. class ) ; job. setoutputkeyclass ( Text. class ) ; job. setoutputvalueclass ( Point3D. class ) ; r e t u r n job ; }

Hadoop Map Reduce 24 / 1 Exécution d un Job: Création du Driver p u b l i c class D r i v e r { p u b l i c s t a t i c void main ( S t r i n g [ ] args ) throws Exception { Job job=createjob ( args [ 0 ], args [ 1 ] ) ; job. setjarbyclass ( D r i v e r. class ) ; job. waitforcompletion ( t r u e ) ; } }

Hadoop Map Reduce: Echaînement de Jobs 25 / 1 Job submit() : Soumet le job waitforcompletion(boolean verbose) : Soumet le job et attend sa terminaison ControlledJob adddependingjob(controlledjob dependingjob) : ajoute une dépendence au job (attend la terminaison du job passé en paramètre pour commencer) submit() : Soumet le job JobControl addjob(controlledjob ajob) : ajoute un nouveau job au JobControl run() : lance les jobs allfinished() : retourne un booléen indiquant si tous les jobs lancés dans ce JobControl sont terminés

Hadoop Map Reduce: Echaînement de Jobs 26 / 1 Pour avoir un retour sur l execution while (! j o b C o n t r o l. a l l F i n i s h e d ( ) ) { System. out. p r i n t l n ( " Jobs i n w a i t i n g s t a t e : " + j o b C o n t r o l. g e t W a i t i n g J o b L i s t ( ). size ( ) ) ; System. out. p r i n t l n ( " Jobs i n ready s t a t e : " + j o b C o n t r o l. getreadyjobslist ( ). size ( ) ) ; System. out. p r i n t l n ( " Jobs i n running s t a t e : " + j o b C o n t r o l. getrunningjoblist ( ). size ( ) ) ; List <ControlledJob > successfuljoblist = jobcontrol. getsuccessfuljoblist ( ) ; System. out. p r i n t l n ( " Jobs i n success s t a t e : " + s u c c e s s f u l J o b L i s t. size ( ) ) ; List <ControlledJob > failedjoblist = jobcontrol. getfailedjoblist ( ) ; System. out. p r i n t l n ( " Jobs i n f a i l e d s t a t e : " + f a i l e d J o b L i s t. size ( ) ) ; }