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



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

Application de K-means à la définition du nombre de VM optimal dans un cloud

Introduction à MapReduce/Hadoop et Spark


Certificat Big Data - Master MAthématiques

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

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

LOGO. Module «Big Data» Extraction de Connaissances à partir de Données. Claudia MARINICA MCF, ETIS UCP/ENSEA/CNRS

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

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

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

4 Exemples de problèmes MapReduce incrémentaux

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

Fouille de données massives avec Hadoop

Cartographie des solutions BigData

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

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

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

BI dans les nuages. Olivier Bendavid, UM2 Prof. A. April, ÉTS

Tables Rondes Le «Big Data»

Programmation parallèle et distribuée

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

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

Programmation parallèle et distribuée

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

CNAM Déploiement d une application avec EC2 ( Cloud Amazon ) Auteur : Thierry Kauffmann Paris, Décembre 2010

Notes de cours Practical BigData

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

Panorama des solutions analytiques existantes

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

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

Utilisation d objets : String et ArrayList

Les technologies du Big Data

Recherche dans un tableau

Ricco Rakotomalala R.R. Université Lyon 2

Application de K-Means à la définition du nombre de VM optimal dans un Cloud

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)

Big Data, un nouveau paradigme et de nouveaux challenges

Big Data et Graphes : Quelques pistes de recherche

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

Les journées SQL Server 2013

Programmation Web. Madalina Croitoru IUT Montpellier

20 ans du Master SIAD de Toulouse - BigData par l exemple - Julien DULOUT - 22 mars ans du SIAD -"Big Data par l'exemple" -Julien DULOUT

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)

Alfstore workflow framework Spécification technique

Etude d Algorithmes Parallèles de Data Mining

td3a correction session7az

Hébergement MMI SEMESTRE 4

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU

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

SQL Server 2012 et SQL Server 2014

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

7 Développement d une application de MapReduce

Bases Java - Eclipse / Netbeans

Le cloud computing au service des applications cartographiques à haute disponibilité

STAGE IREM 0- Premiers pas en Python

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)

1 Recherche en table par balayage

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

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Big Data Concepts et mise en oeuvre de Hadoop

Conception des systèmes répartis

OpenPaaS Le réseau social d'entreprise

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

2015 kmeans. September 3, 2015

Orchestrer son cloud OpenStack avec Heat

Introduction à JDBC. Accès aux bases de données en Java

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

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Corrigé des exercices sur les références

Mise en œuvre des serveurs d application

Techniques d analyse et de conception d outils pour la gestion du processus de segmentation des abonnés des entreprises de télécommunication

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

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Cours Bases de données 2ème année IUT

Enseignant: Lamouchi Bassem Cours : Système à large échelle et Cloud Computing

Big Data et Graphes : Quelques pistes de recherche

Cloud Computing. Introduction. ! Explosion du nombre et du volume de données

Initiation à Internet Médiathèque de Bussy Saint-Georges. Le Cloud

Improving MapReduce Performance in Heterogeneous Environments

Cloud Computing : Utiliser Stratos comme PaaS privé sur un cloud Eucalyptus

Tp 1 correction. Structures de données (IF2)

Architectures informatiques dans les nuages

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

«Clustering» et «Load balancing» avec Zope et ZEO

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

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Jean-François Boulicaut & Mohand-Saïd Hacid

BIG Data et R: opportunités et perspectives

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Introduction à MATLAB R

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

ETUDE ET IMPLÉMENTATION D UNE CACHE L2 POUR MOBICENTS JSLEE

Le Cloud au LIG? Pierre Neyron PimLIG

Transcription:

Implémentation parallèle de certains algorithmes de fouille de données avec le framework MapReduce Algorithmes : K-means et Apriori Maria Malek LARIS-EISTI maria.malek@eisti.fr

1 Cloud Computing et MapReduce Introduction à MapReduce 2 L algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce 3 Description de l algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE! 4

Cloud Computing Introduction à MapReduce Le cloud computing : déporter sur des serveurs distants des stockages et des traitements informatiques traditionnellement localisés sur des serveurs locaux ou sur le poste de l utilisateur. le cloud computing est l accès via le réseau, à la demande et en libre-service à des ressources informatiques virtualisées et mutualisées. Le cloud a émergé principalement pour répondre aux exigences de continuité et de qualité du service : l application, qui est en contact avec le client ; la plate-forme, qui exécute l application ; l infrastructure, qui est le support de la plate-forme ; les données, qui sont fournies sur demande.

MapReduce Cloud Computing et MapReduce Introduction à MapReduce MapReduce est un framework de développement informatique, introduit par Google, dans lequel sont effectués des calculs parallèles, et souvent distribués, de données potentiellement très volumineuses ( Terabyte et plus). Les terminologies de Map et Reduce, sont empruntées aux langages de programmation fonctionnelle utilisés pour leur construction. MapReduce s articule en deux étapes (fonctions) : Map : prend en argument un enregistrement, calcule une liste de couples clef/valeur intermédiaires. Reduce : prend en argument une clef et la liste des valeurs intermédiaire générées par les différentes instances de la fonction Map, effectue un traitement.

MapReduce : Schéma Introduction à MapReduce

MapReduce : Caractéristiques Introduction à MapReduce MapReduce permet de répartir la charge sur un grand nombre de serveurs. Distribution haut niveau avec une abstraction quasi-totale du la couche matérielle (scalable-friendly). MapReduce gère entièrement le cluster et la répartition de la charge. Cela permet de faire du calcul distribué dans un environnement Cloud. Plusieurs implémentations de ce framework dans différents langages (C++, Java, Python, etc.) et par de nombreux organismes (Google, Yahoo, etc.).

MapReduce : Exemple-1 Introduction à MapReduce Fréquences des mots dans un ensemble de documents. map(string key, String value) : // key : document name // value : document contents for each word w in value : EmitIntermediate(w, 1 ) ; reduce(string key, Iterator values) : // key : a word // values : a list of counts int result = 0 ; for each v in values : result += ParseInt(v) ; Emit(AsString(result)) ;

MapReduce : Exemple-1 Introduction à MapReduce

MapReduce : Exemple-2 Introduction à MapReduce La commande < grep Motif > La fonction Map renvoie un enregistrement s il match le motif. La fonction Reduce est la fonction identité, son rôle est juste d écrire les valeurs intermédiaires sur la sortie. Caractéristiques 1To de données. 1800 serveurs. Les données sont découpés en 15000 morceaux d environ 64Mo. Un seul serveur execute la reduction (afin d avoir les résultats dans un seul fichier).

MapReduce : Exemple-2 Introduction à MapReduce La commande< grep Motif > La fonction Map renvoie un enregistrement s il match le motif. La fonction Reduce est la fonction identité, son rôle est juste d écrire les valeurs intermédiaires sur la sortie. Performances Démarrage relativement lent dû au temps de propagation du programme (1mn). Les Maps sont tous finis au bout d environ 80s. L opération se termine en 150s. On atteint un pic de lecture de 30Go/s.

Hadoop et Mahout Introduction à MapReduce Hadoop Une implémentation open source de MapReduce en Java, Projet Apache. Yahoo, Amazon (cloud provider) proposent MapReduce en utilisant Hadoop. Mahout Une libraire Java : implémentation de certains algorithmes basée sur Hadoop. Algorithmes de recommandation, de Data mining : k-means, classeur bayésien, réseaux de neurones, FPGrowth, etc.

Les centres mobiles : Illustration L algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce

K-means : Algorithme séquentiel L algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce 1 Affecter aléatoirement chaque exemple à une des k catégories s(k). 2 Calculer le centre de chaque catégorie c(k). 3 Tantque les catégories ne sont pas stables faire 1 Pour chaque exemples exemple(i) faire calculer la distance entre exemple(i) et tous les autres centres c(j). trouver j* telque c(j*) soit le plus proche de exemple(i) affecter exemple(i)à la catégorie j*. Recalculer les centres des catégories changées.

H-means : Algorithme séquentiel L algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce 1 Affecter aléatoirement chaque exemple à une des k catégories s(k). 2 Calculer le centre de chaque catégorie c(k). 3 Tantque les catégories ne sont pas stables faire 1 Pour chaque exemples exemple(i) faire calculer la distance entre exemple(i) et tous les autres centres c(j). trouver j* telque c(j*) soit le plus proche de exemple(i) affecter exemple(i) à la catégorie j*. 2 Recalculer les centres des catégories changées.

Architecture MIMD L algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce Architectures : MIMD (mémoire distribué). Un ensemble de processeurs qui travaillent simultanément. Chaque processeur a une mémoire. Diviser le problème en plusieurs sous-problèmes. Distribuer certaines données et dupliquer d autres. Impliquer la communication dans le calcul.

H-means : Algorithme parallèle L algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce 1 Distribuer les données de S sur p processeurs 2 Pour chaque processeur k p {0, 1,.., p 1} (en parallèle) Affecter aléatoirement chaque exemple dans le processeur k p à une catégorie 3 Calculer les centres (algorithme parallèle). les centres sont dupliqués sur les k processeurs 4 les centres ne sont pas stables 1 Pour chaque exemple exemle(i) dans le processeur k p Calculer les distance entre exemple(i) et tous les centres. Choisir k telque le centre k est le plus proche de l exemple exemple(i) Affecter exemple(i) à la catégorie k

L algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce Algorithme parallèle pour le calcul des centres 1 Pour chaque processeur k p {0, 1,.., p 1} (en parallèle) 1 Calculer la somme partielle des exemples appartenant à la même catégorie. 2 Envoyer la somme partielle aux autres processeurs. 3 Recevoir la somme partielle des autres processeurs. 4 pour chaque catégorie Effectuer la somme des sommes partielles. Diviser la somme totale par le nombre d exemple dans la catégorie.

L algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce Implémentation de K-means sur MapReduce-1 Source : horkicky.blogspot.com

L algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce Implémentation de K-means sur MapReduce-2 kmeans(data) initial centroids = pick(k, data) upload(data) writetos3(initial centroids) old centroids = initial centroids while (true) map reduce() new centroids = readfroms3() if change(new centroids, old centroids) < delta break else old centroids = new centroids result = readfroms3() return result Source : horkicky.blogspot.com

Les règles d association - Définition Description de l algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE! Ensemble d items fréquents : motif fréquent dans la base de transactions (calcul de support). minsupp est un paramètre Trouver tous les ensembles d items fréquents de longueurs différentes. Trouver les règles d associations à partir de l ensemble d items fréquents (calcul de la confiance). minconf est un paramètre. Exemple 1 Si ABCD est un ensemble d items fréquents 2 Construire la règle AB CD ssi support(abcd)/support(ab) minconf

Les règles d association - Exemple Description de l algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE! Base de transactions 100 1 3 4 200 2 3 5 300 1 2 3 5 400 2 5 Résultats avec minsupp=2 : Items fréquents : L 1 = {1, 2, 3, 5}, L 2 = {13, 23, 25, 35},L 3 = {235}. Règles d association : R 1 : 2 35 avec conf = 2 3, R 2 : 3 5 avec conf = 2 3, etc.

Les règles d association - Algorithmes Description de l algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE! Terminologie L k C k est l ensemble constitué des sous-ensembles d items fréquents de longueur k. est un ensemble constitué des sous-ensembles d items candidats de longueur k, notons bien que L k C k Propriété Soit X k un sous-ensemble d items fréquent, tous les sous-ensembles d items contenus dans X k et qui soient de longueurs inférieurs à k sont fréquents. 1 Si ABCD est un ensemble d items fréquent 2 ABC,ABD, BCD, AB,AC,BC,BD,CD,A,B,C,D les sont aussi.

Les règles d association - Apriori Description de l algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE! Calculer L 1 k 2 TantQue L k 1 <> φ 1 C k apriori gen(l k 1 ) 2 TantQue t D 1 C t sousens(c k, t) 2 TantQue c C t 1 c.count++ 3 L k {c C k c.count minsup} 4 k k + 1 RETOURNER k L k

Les règles d association - Apriori - Suite Description de l algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE! L algorithme apriori-gen, la phase joindre : 1 insert into C k 2 select p[1], p[2],..p[k 1], q[k 1] 3 from p,q 4 Where p[1] = q[1]..p[k 2] = q[k 2],p[k 1] < q[k 1] la phase effacer 1 Si L 3 = {{123}, {124}, {134}, {135}, {234}}, 2 la phase joindre donne comme résultat C 4 = {{1234}, {1345}} 3 la phase effacer donne le résultat : C 4 = {{1234} L algorithme sousens calcule le sous ensemble C t C k,

Description de l algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE! Implémentation de Apriori sur MapReduce -1 Map void map(void* map data) for each transaction in map data for (i = 0 ; i < candidates size ; i++) match = false itemset = candidates[i] match = itemset exists(transaction, itemset) if (match == true ) emit intermediate(itemset, one) Reduce void reduce(void* key, void** vals, int vals length) count = 0 for (i = 0 ; i < vals length ; i++) count+ = *vals[i] if ( count support level * num transactions)/100.0 emit(key, count)

Description de l algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE! Implémentation de Apriori sur MapReduce -2 Mise à jour de la liste des candidats void update frequent candidates(void * reduce data out) j = 0 length = reduce data out length for (j = 0 ; i < length ; j++) temp candidates[j++] = reduce data out key candidates = temp candidates

MapReduce et MATE -1 Description de l algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE! MapReduce (Google 2004) & Mate (W. Jiang,V.T. Ravi, G.Agrawal, Ohio State University, 2004-2009) MapReduce /* Outer Sequential Loop */ While() /* Reduction Loop */ Foreach (element e) (i, val) = Process(e) ; Sort (i,val) pairs using i Reduce to compute each RObj(i)

MapReduce et MATE -2 Description de l algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE! MapReduce (Google 2004) & Mate (W. Jiang,V.T. Ravi, G.Agrawal, Ohio State University, 2004-2009) Mate /* Outer Sequential Loop / While() /* Reduction Loop */ Foreach (element e) (i, val) = Process(e) RObj(i)=Reduce(RObj(i),val) ; Local combination of RObj

MATE : Schéma Cloud Computing et MapReduce Description de l algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE!

Implémentation de Apriori sur MATE Description de l algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE! reduction(void * reduction data) for each transaction reduction data for(i=0 ; i < candidatessize ;i++) match = false itemset = candidates[i] match = itemset exists(transaction, itemset) ; if (match == true ) object id= itemset.object id accumulate(object id, 0, 1) ;

Nouvel algorithme pour la recherche des sous ensembles fréquents - 1 Appliquer l algorithme k-means ou h-means dans le but de chercher plus efficacement les sous-ensembles fréquents Améliorer le point de départ de la recherche des sous ensembles fréquents (au lieu de partir des candidats de longueurs 1) Paramètres de l algorithme : K : est le nombre initial de catégories (clusters) minsupp : est le support minimal pour qu un sous-ensemble soit considéré comme fréquent. Entrées : Un ensemble de transactions : D. Sortie : La liste des sous-ensembles fréquents.

Nouvel algorithme pour la recherche des sous ensembles fréquents - 2 Structures intermédiaires Une liste appelée admis qui contiendra les sous-ensembles fréquents retenus. Une liste appelée exclus qui contiendra les sous-ensembles exclus (trouvés non fréquents). Une liste appelée candidats qui contiendra une liste (triée par ordre décroissante) de sous ensemble à tester, cette liste doit être triée Définitions Sous-ensemble localement fréquent : L i un sous-ensemble de longueur i on dit que L i est localement fréquent ssi il est fréquent dans la catégorie (ou le cluster) à laquelle il appartient.

Nouvel algorithme pour la recherche des sous ensembles fréquents - 3 Appliquer l algorithme k-means et récupérer le k barycentres et le k catégories (ou clusters). Soit C 1, C 2,.., C k les centres triés par leurs longueurs et à longueurs égales par leurs nombres d occurrences dans D (par leurs supports). Initialiser la liste candidats avec C 1, C 2,.., C k. Tant que candidats n est pas vide faire : Soit C i le premier élément de candidats : Si C i admis et C i exclu alors 1 Si C i est localement fréquent alors mettre-à-jour-admis(c i ), exit. 2 Si C i est globalement fréquent alors mettre-à-jour-admis (C i ), exit. 3 Sinon, mettre-à-jour-exclus(c i ), et ajouter tous les sous-ensembles fréquents inclus dans C i à la liste candidats

Proposition d un algorithme pour la recherche des sous ensembles fréquents - 4 mettre-à-jour-admis(c i ) : ajouter à la liste admis le sous ensemble C i et tous les sous-ensembles inclus dans C i. mettre-à-jour-exclus(c i ) : ajouter à la liste exclus le sous ensemble C i et tous les sous-ensembles qui incluent C i.

Travaux actuels & Perspectives Travaux actuels Implémentation d une version C++ (stage-laris) et une version en Java (PFE-IAD) et expérimentations. Solution au problème complétude (PFE-IAD). Implémentation de kmedoid en C# et expérimentations sur la distribution des clusters sur un ensemble de machines virtuelles (Khaled Tannir-Doctorant). Perspectives Implémentation sur MapReduce et comparaison avec : Apriori sur MapReduce. FPGrowth proposé dans Mahout.

Bibliographie I Rakesh Agrawal and Ramakrishnan Srikant. Fast algorithms for mining association rules in large databases. In VLDB, pages 487 499, 1994. Cheng-Tao Chu, Sang Kyun Kim, Yi-An Lin, YuanYuan Yu, Gary R. Bradski, Andrew Y. Ng, and Kunle Olukotun. Map-reduce for machine learning on multicore. In NIPS, pages 281 288, 2006. Jeffrey Dean and Sanjay Ghemawat. Mapreduce : Simplified data processing on large clusters. In OSDI, pages 137 150, 2004. Wei Jiang, Vignesh T. Ravi, and Gagan Agrawal. A map-reduce system with an alternate api for multi-core environments. In CCGRID, pages 84 93, 2010. Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action. Manning Publications, 1 edition, January 2011. Weizhong Zhao, Huifang Ma, and Qing He. Parallel k-means clustering based on mapreduce. In CloudCom, pages 674 679, 2009.