4 Exemples de problèmes MapReduce incrémentaux



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

Certificat Big Data - Master MAthématiques

M2 GL UE DOC «In memory analytics»

Programmation parallèle et distribuée

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

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

Introduction à MapReduce/Hadoop et Spark

Programmation parallèle et distribuée

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

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

Cartographie des solutions BigData

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

Les technologies du Big Data

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

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

Table des matières INITIATION À SPARK AVEC JAVA 8 ET SCALA

BIG DATA en Sciences et Industries de l Environnement

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

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

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


Ricco Rakotomalala R.R. Université Lyon 2

Panorama des solutions analytiques existantes

HADOOP ET SON ÉCOSYSTÈME

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

Anticiper et prédire les sinistres avec une approche Big Data

Fouille de données massives avec Hadoop

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

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

Entity API. Alexandre Todorov, Felip Manyer i Ballester. Montpellier, le 17 septembre 2014

Bases de Données NoSQL

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

Cours 8 Not Only SQL

Développement Logiciel

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

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

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

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

Organiser vos données - Big Data. Patrick Millart Senior Sales Consultant

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Notes de cours Practical BigData

as Architecture des Systèmes d Information

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Web Science. Master 1 IFI. Andrea G. B. Tettamanzi. Université de Nice Sophia Antipolis Département Informatique andrea.tettamanzi@unice.

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

Coup de Projecteur sur les Réseaux de Neurones

BIG Data et R: opportunités et perspectives

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)

Big Data, un nouveau paradigme et de nouveaux challenges

Big Graph Data Forum Teratec 2013

Big Data Concepts et mise en oeuvre de Hadoop

Efficient Object Versioning for Object- Oriented Languages From Model to Language Integration

Modèles à Événements Discrets. Réseaux de Petri Stochastiques

Les participants repartiront de cette formation en ayant une vision claire de la stratégie et de l éventuelle mise en œuvre d un Big Data.

Rapport de Projet Béatrice Frey et Cyril Crassin Printemps Projet Fourmis. Université de Technologie de Belfort-Montbéliard

Corrigé des TD 1 à 5

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

Enjeux mathématiques et Statistiques du Big Data

1 Modélisation d être mauvais payeur

OpenPaaS Le réseau social d'entreprise

MCMC et approximations en champ moyen pour les modèles de Markov

Une Architecture de Bureaux Graphiques Distants Sécurisée et Distribuée

MANIPULATION ET VISUALISATION DE GROSSES BASES DE DONNÉES AVEC R

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

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

Approche Contract First

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

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

Chapitre 5 : Flot maximal dans un graphe

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

Le projet Gaïa, le Big Data au service du traitement de données satellitaires CRIP - 16/10/2013 Pierre-Marie Brunet

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

Génie Logiciel avec Ada. 4 février 2013

Chapitre VI- La validation de la composition.

Introduc)on à Map- Reduce. Vincent Leroy

L exclusion mutuelle distribuée

Projet gestion d'objets dupliqués

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

Plan du cours Cours théoriques. 29 septembre 2014

Les quatre piliers d une solution de gestion des Big Data


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

Algorithmique répartie

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

Cassandra et Spark pour gérer la musique On-line

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Offre formation Big Data Analytics

Arbres binaires de recherche

données en connaissance et en actions?

Big Data et Graphes : Quelques pistes de recherche

INF6304 Interfaces Intelligentes

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Introduction à MATLAB R

Resolution limit in community detection

Windows Internet Name Service (WINS)

Transcription:

4 Exemples de problèmes MapReduce incrémentaux 1 / 32 Calcul des plus courtes distances à un noeud d un graphe Calcul des plus courts chemins entre toutes les paires de noeuds d un graphe Algorithme PageRank Regression Logistique

Calcul des plus courtes distances à un noeud d un graphe 2 / 32 Quelles Entrées? Quelles Transformations Map? Quelles Clés de Regroupement? Quelles opérations de réduction?

Calcul des plus courtes distances à un noeud d un graphe 3 / 32 Données : Structure de Noeud n: n.id: identifiant du noeud n n.adjacencylist: Liste d adjacence S(n) du noeud n n.dist: Distance du noeud n au noeud de départ start (initialisée à pour tous les noeuds sauf start) Formulation (BFS): start.dist = 0 Pour tout noeud n atteignable par un ensemble de noeuds M, n.dist = 1 + min m M m.dist

Calcul des plus courtes distances à un noeud d un graphe 4 / 32 Breadth First Search: Job MapReduce Map( n ) { Emettre ( n. id, n ) ; Si ( n.dist < ) : Pour t o u t id n.adjacencylist : dist n.dist +1 Emettre ( id,node ( id,m.dist, ) ) ; Reduce ( nid, nodes ) { min ; nmin ; adj ; Pour t o u t n nodes : Si ( n.adjacencylist ) : adj n.adjacencylist Si ( ( nmin == ) ou ( n.dist < min ) ) : min n.dist ; nmin n nmin.adjacencylist adj ; Emettre ( nmin ) ;

Calcul des plus courts chemins entre toutes les paires de noeuds d un graphe 5 / 32 Quelles Entrées? Quelles Transformations Map? Quelles Clés de Regroupement? Quelles opérations de réduction?

Calcul des plus courts chemins entre toutes les paires de noeuds d un graphe 6 / 32 Données : Chemins C entre paire de noeuds: C.start: noeud de depart C.end: noeud de fin C.dist: distance (nbre de liens à suivre pour atteindre C.end à partir de C.start C.shortests: Ensemble de chemins de C.start à C.end de distance C.dist Formulation : Pour tout couple de noeuds u,v tel qu il existe un lien entre u et v, la distance minimale D(u,v) est : D(u,v) = 1 Pour tout couple de noeuds u,v non directement lié : D(u,v) = min(d(u,m) +D(m,v)) m

Calcul des plus courts chemins entre toutes les paires de noeuds d un graphe 7 / 32 Calcul des plus courts chemins: Job MapReduce Map( p ) { Emettre ( p. s t a r t, p ) ; Si ( p. new ) : Emettre ( p. end, p ) ; Reduce ( node, ListPaths ) { P ;Ends ;Starts Pour t o u t p ListPaths : p.new False ; Si ( p. s t a r t ==node ) : Ends = Ends p ; Sinon : Starts = Starts p ; Pour t o u t ep Ends : P[ep.start,ep.end] = ep ; Pour t o u t sp Starts : Si ( sp. s t a r t ==ep. s t a r t ) : continue ; d sp.dist +ep.dist ; p P[sp.start,ep.end] ; Si ( ( p== n u l l ) ou ( p. d i s t >=d ) ) : newp Fusion(sp,ep) ; Si ( p. d i s t ==d ) : p.shortests p.shortests newp.shortests ; Sinon : P[sp.start,ep.end] newp ; Pour t o u t p P : Emettre ( p ) ;

Algorithme PageRank 8 / 32 PageRank simule le comportement d un surfeur aléatoire: 1 au temps t, le sufeur est sur la page p t, 2 avec une probabilité d, il clique aléatoirement sur un lien de p t. p t+1 est alors la page pointée par ce lien. 3 avec une probabilité 1 d, p t+1 est une page Web choisie aléatoirement. 4 retour à l étape 1. Avec P i : l ensemble des pages pointant vers la page i l j : le nombre de liens sortant de la page j Probabilité µ t i que le surfeur soit sur la page i au temps t = µ t+1 = 1 d { 1 N 1+dAµt l avec A ij = j si j P i 0 sinon et N : #pages Web.

Algorithme PageRank 9 / 32 µ t+1 = 1 d { 1 N 1+dAµt l avec A ij = j si j P i 0 sinon et N : #pages Web. Quelles Entrées? Quelles Transformations Map? Quelles Clés de Regroupement? Quelles opérations de réduction?

Algorithme PageRank 10 / 32 Avec d=1 :

Algorithme PageRank 11 / 32 Avec d=1 :

Algorithme PageRank 12 / 32 Avec d=1 :

Algorithme PageRank 13 / 32 Données : Structure de Noeud n: n.id: identifiant du noeud n n.adjacencylist: Liste d adjacence S(n) du noeud n n.p: score PageRank à l iteration courante Formulation : Pour tout noeud n: n.p t 0 = 1 N Pour tout noeud n atteignable par un ensemble de noeuds M, n.p t+1 = 1 d N +d m.p t m.adjacencylist m M

Algorithme PageRank 14 / 32 PageRank: Job MapReduce Map( n ) { n.p np m.adjacencylist n.p 0 Emettre ( n. id, n ) ; Pour t o u t id n.adjacencylist : Emettre ( id,node ( id,,np ) ) ; Reduce ( nid, nodes ) { sum 0 ; adj ; Pour t o u t n nodes : Si ( n.adjacencylist ) : adj n.adjacencylist ; sum sum +n.p ; Emettre ( Node ( nid,adj, 1 d +d sum ) ) ; N

Regression Logistique 15 / 32 Hypothèse : Rapport de probas conditionnelles peut être modélisé par une application linéaire ln p(1 x) 1 p(1 x) = θ.x p(1 X) = eθ.x 1+e θ.x = 1 1+e θ.x Maximum de vraissemblance θ = argmax ni 1 y i ln( ) +(1 y 1+e θ θ.x i )ln(1 Gradient : n 1 i x i (y i 1+e θ.x ) 1 ) 1+e θ.x

Regression Logistique 16 / 32 Estimation du maximum de vraissemblance par montée de gradient : n θ t+1 = θ t 1 + α x i (y i 1 +e θ.x ) Quelles Entrées? Quelles Transformations Map? Quelles Clés de Regroupement? Quelles opérations de réduction? i

Regression Logistique 17 / 32 Données : Item = item.x : Vecteur de features de nbdims dimensions item.y : Score à prédire Entrées fixes, seul θ varie Formulation: θ t+1 = θ t + α n i x i (y i 1 ) 1+e θ.x

Regression Logistique 18 / 32 Montée de gradient: Job MapReduce Map( item ) { Pour i de 1 à nbdims : Emettre ( i,item.x i (item.y 1 1+e <θ,item.x> ) ) ; Reduce ( i, gradients ) { sumg 0 ; Pour t o u t g gradients : sumg sumg +g Emettre ( i,theta i + α sumg ) ;

Hadoop Map Reduce: Echaînement de Jobs 19 / 32 Resultats en tant que nouvelles entrées du MapReduce Ecriture/Lecture des resultats dans des SequenceFile Ecriture/Lecture des resultats dans des fichiers De préférence SequenceFile : job.setouputformat(sequencefileoutputformat.class) A l iteration suivante, lecture à partir d un SequenceFile : job.setinputformat(sequencefileinputformat.class) Resultats en tant que données en RAM Entrées fixes Entrées fixes Paramètres lus à partir de fichiers resultats

Hadoop Map Reduce vs Spark 20 / 32 Hadoop Map Reduce: Inconvénients Beaucoup de lectures/ecritures sur disque Pas de mise en mémoire vive Spark Mise en oeuvre d une mémoire partagée Simplification des process Jusqu à 10x fois plus rapide sur disque Jusqu à 100x fois plus rapide sur disque Code plus compact Mieux adapté pour l apprentissage statistique

Spark 21 / 32 Contexte Spark Définit les opérations Spark à effectuer sur les collections de données Spark: Initialisation import org. apache. spark. SparkConf ; import org. apache. spark. api. java. JavaSparkContext ; SparkConf sparkconf = new SparkConf ( ). setappname (name ) ; JavaSparkContext sc = new JavaSparkContext ( sparkconf ) ;

Spark Resilient Distributed Datasets (RDD) Collections d éléments manipulables en parallèle Deux manières de créer des RDDs: Parallelisation d une collection en mémoire Spark: Collection parallelisée 22 / 32 import org. apache. spark. api. java. JavaRDD ; List <Integer > data = Arrays. aslist (1, 2, 3, 4, 5 ) ; JavaRDD< Integer > d i s t D ata = sc. p a r a l l e l i z e ( data ) ; Référencement d un dataset sur un système de fichier distribué comme HDFS Spark: Initialisation import org. apache. spark. api. java. JavaRDD ; / / F i c h i e r ( s ) t e x t e à l i r e l i g n e par l i g n e JavaRDD< String > d i s t F i l e = sc. t e x t F i l e ( " data " ) ; / / F i c h i e r s t e x t e e n t i e r s JavaRDD< String > d i s t F i l e = sc. wholetextfiles ( " data " ) ; / / Fichier ( s ) SequenceFile avec K et V des types de données étendant Writable JavaRDD< String > d i s t F i l e = sc. sequencefile [ K, V ] ( " data " ) ; / / Autres types de f i c h i e r s avec Reader Hadoop JavaRDD< String > d i s t F i l e = sc. newhadooprdd ( " data " ) ;

Spark 23 / 32 Deux types d operations sur les RDD Transformations Création de nouveaux RDD par application d une transformation map, flatmap, filter, reducebykey, join, etc... "Lazy" operations => effectué uniquement lorsqu une action est requise sur le resultat de la transformation Moins de résultats à retourner Plannification des tâches facilitée Actions Opération produisant un résultat reduce, takesample, count(), etc... saveastextfile, saveassequencefile, etc...

Spark 24 / 32 Persistence des RDD Si besoin de réutiliser le résultat d une transformation plusieurs fois rdd.persist(storagelevel.level): stocke le RDD pour utilisation ultérieure Différents types de stockage: MEMORY_ONLY : Stocke les RDD en tant qu objets Java déserialisés en mémoire vive. Si une partie ne tient pas en mémoire, elle sera re-calculée lorsque l on en aura besoin MEMORY_AND_DISK : Stocke les RDD en tant qu objets Java déserialisés en mémoire vive, mais si une partie ne tient pas en mémoire, on l écrit sur disque DISK_ONLY : Stocke les RDD sur disque MEMORY_ONLY_SER et MEMORY_AND_DISK_SER : Identique à MEMORY_ONLY et MEMORY_AND_DISK mais stocke les objets après sérialisation. Plus léger en mémoire mais plus lent à reconstruire.

Spark 25 / 32

Spark 26 / 32 Fonctions Définition de fonction à passer aux opérations Function : 1 argument en entrée, chaque valeur du dataset (map) Function2 : 2 arguments en entrée, le resultat courant + la nouvelle valeur (reduction) FlatMapFunction : 1 argument en entrée, une liste de valeur en sortie (flatmap) Spark: Exemple JavaRDD< String > l i n e s = sc. t e x t F i l e ( " data. t x t " ) ; JavaRDD<Integer > linelengths = lines.map(new Function <String, Integer > ( ) { p u b l i c I n t e g e r c a l l ( S t r i n g s ) { r e t u r n s. length ( ) ; ) ; i n t totallength = linelengths. reduce (new Function2 <Integer, Integer, Integer > ( ) { p u b l i c I n t e g e r c a l l ( I n t e g e r a, I n t e g e r b ) { r e t u r n a + b ; ) ;

Spark 27 / 32 Certaines opérations travaillent avec des paires Clé-Valeur JavaPairRDD, PairFunction, Tuple2 Spark: Exemple JavaRDD< String > l i n e s = j s c. t e x t F i l e ( " JavaHdfsLR. java " ) ; JavaRDD< String > words = l i n e s. flatmap ( new FlatMapFunction <String, String > ( ) { p u b l i c I t e r a b l e < String > c a l l ( S t r i n g s ) { r e t u r n Arrays. a s L i s t ( s. s p l i t ( " " ) ) ; ) ; JavaPairRDD<String, Integer > ones = words. maptopair ( new PairFunction <String, String, Integer > ( ) { public Tuple2<String, Integer > c a l l ( String s ) { return new Tuple2<String, Integer >(s, 1 ) ; ) ; JavaPairRDD<String, Integer > counts = ones. reducebykey ( new Function2 <Integer, Integer, Integer > ( ) { public Integer c a l l ( Integer i1, Integer i2 ) { return i1 + i2 ; ) ;

Spark 28 / 32 Variables partagées Mise en place de variables auxquelles les différents process en parallèle peuvent avoir accès Très utile pour des tâches d apprentissage statistique avec optimisation itérative de paramètres Deux types de variables partagées Variables Broadcast: variable en lecture seule, partagée par tous les process Accumulateurs: variable en écriture seule, à laquelle on ne peut qu ajouter des éléments (seul le Driver peut lire le contenu de la variable)

Spark 29 / 32 Deux types de variables partagées Variables Broadcast Spark: Variables Broadcast Broadcast < i n t [ ] > broadcastvar = sc. broadcast (new i n t [ ] { 1, 2, 3 ) ; broadcastvar. value ( ) ; Accumulateurs Spark: Accumulateurs class VectorAccumulatorParam implements AccumulatorParam<Vector > { p u b l i c Vector zero ( Vector i n i t i a l V a l u e ) { r e t u r n i n i t i a l V a l u e ; public Vector addinplace ( Vector v1, Vector v2 ) { v1. addinplace ( v2 ) ; return v1 ; Vector i n i t i a l V a l u e =new Vector (... ) ; Accumulator <Vector > vecaccum = sc. accumulator ( i n i t i a l V a l u e, new VectorAccumulatorParam ( ) ) ; / / De n importe quel process : vacaccum. add ( new Vector (... ) ) ; / / Du d r i v e r : vacaccum. value ( ) ;

Spark 30 / 32 Exemple Spark: Regression Logistique class ComputeGradient extends Function <DataPoint, Vector > { p r i v a t e Vector w; ComputeGradient ( Vector w) { t h i s.w = w; p u b l i c Vector c a l l ( DataPoint p ) { r e t u r n p. x. times ( p. y (1 / (1 + Math. exp( w. dot ( p. x ) ) ) ) ) ; JavaRDD<DataPoint > p o i n t s = spark. t e x t F i l e (... ). map(new ParsePoint ( ) ). cache ( ) ; Vector w = Vector. random (D ) ; / / c u r r e n t separating plane f o r ( i n t i = 0; i < ITERATIONS ; i ++) { Vector gradient = points.map(new ComputeGradient (w ) ). reduce (new AddVectors ( ) ) ; w = w. s u b t r a c t ( g r a d i e n t ) ; System. out. p r i n t l n ( " F i n a l separating plane : " + w ) ;

Spark 31 / 32

Spark Streaming 32 / 32