Algorithmes : K-means et - Maria Malek

publicité
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
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
[email protected]
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
1
Cloud Computing et MapReduce
Introduction à MapReduce
2
Parallélisation de l’algorithme K-means
L’algorithme k-means : version séquentielle
Implémentation de K-means avec une architecture MIMD
Implémentation de K-means sur MapReduce
3
Parallélisation de l’algorithme Apriori
Description de l’algorithme Apriori
Implémentation de Apriori sur MapReduce
Implémentation de Apriori sur MATE !
4
Notre approche
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
Introduction à MapReduce
Cloud Computing
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.
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
Introduction à MapReduce
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.
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
Introduction à MapReduce
MapReduce : Schéma
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
Introduction à MapReduce
MapReduce : Caractéristiques
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.).
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
Introduction à MapReduce
MapReduce : Exemple-1
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)) ;
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
Introduction à MapReduce
MapReduce : Exemple-1
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
Introduction à MapReduce
MapReduce : Exemple-2
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).
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
Introduction à MapReduce
MapReduce : Exemple-2
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.
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
Introduction à MapReduce
Hadoop et Mahout
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.
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
L’algorithme k-means : version séquentielle
Implémentation de K-means avec une architecture MIMD
Implémentation de K-means sur MapReduce
Les centres mobiles : Illustration
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
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
1
Affecter aléatoirement chaque exemple à une des k catégories
s(K).
2
Calculer le centre de chaque catégorie c(k).
Tantque les catégories ne sont pas stables faire
3
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.
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
L’algorithme k-means : version séquentielle
Implémentation de K-means avec une architecture MIMD
Implémentation de K-means sur MapReduce
H-means : Algorithme séquentiel
1
Affecter aléatoirement chaque exemple à une des k catégories
s(K).
2
Calculer le centre de chaque catégorie c(k).
Tantque les catégories ne sont pas stables faire
3
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.
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
L’algorithme k-means : version séquentielle
Implémentation de K-means avec une architecture MIMD
Implémentation de K-means sur MapReduce
Architecture MIMD
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.
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
L’algorithme k-means : version séquentielle
Implémentation de K-means avec une architecture MIMD
Implémentation de K-means sur MapReduce
H-means : Algorithme parallèle
1
2
Distribuer les données de S sur p processeurs
Pour chaque processeur kp ∈ {0, 1, .., p − 1} (en parallèle)
Affecter aléatoirement chaque exemple dans le processeur kp à
une catégorie
3
Calculer les centres (algorithme parallèle).
4
les centres ne sont pas stables
les centres sont dupliqués sur les k processeurs
1
Pour chaque exemple exemle(i) dans le processeur kp
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’
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
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 kp ∈ {0, 1, .., p − 1} (en parallèle)
1
2
3
4
Calculer la somme partielle des exemples appartenant à la
même catégorie.
Envoyer la somme partielle aux autres processeurs.
Recevoir la somme partielle des autres processeurs.
pour chaque catégorie
Effectuer la somme des sommes partielles.
Diviser la somme totale par le nombre d’exemple dans la
catégorie.
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
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
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
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
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
Description de l’algorithme Apriori
Implémentation de Apriori sur MapReduce
Implémentation de Apriori sur MATE !
Les règles d’association - Définition
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
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
Description de l’algorithme Apriori
Implémentation de Apriori sur MapReduce
Implémentation de Apriori sur MATE !
Les règles d’association - Exemple
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 :
L1 = {1, 2, 3, 5}, L2 = {13, 23, 25, 35},L3 = {235}.
Règles d’association :
R1 : 2 → 35 avec conf = 23 ,
R2 : 3 → 5 avec conf = 23 ,
etc.
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
Description de l’algorithme Apriori
Implémentation de Apriori sur MapReduce
Implémentation de Apriori sur MATE !
Les règles d’association - Algorithmes
Terminologie
Lk est l’ensemble constitué des sous-ensembles
d’items fréquents de longueur k.
Ck est un ensemble constitué des sous-ensembles
d’items candidats de longueur k, notons bien
que Lk ⊂ Ck
Propriété Soit Xk un sous-ensemble d’items fréquent, tous
les sous-ensembles d’items contenus dans Xk et qui soient de
longueurs inférieurs à k sont fréquents.
1
2
Si ABCD est un ensemble d’items fréquent
ABC ,ABD, BCD, AB,AC ,BC ,BD,CD,A,B,C ,D les sont aussi.
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
Description de l’algorithme Apriori
Implémentation de Apriori sur MapReduce
Implémentation de Apriori sur MATE !
Les règles d’association - Apriori
Calculer L1
k ←2
TantQue Lk−1 <> φ
1
2
Ck ← apriori − gen(Lk−1 )
TantQue t ∈ D
1
2
3
4
Ct ← sousEns(Ck , t)
TantQue c ∈ Ct
1 c.count++
Lk ← {c ∈ Ck |c.count ≥ minSup}
k ←k +1
RETOURNER
S
k
Lk
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
Description de l’algorithme Apriori
Implémentation de Apriori sur MapReduce
Implémentation de Apriori sur MATE !
Les règles d’association - Apriori - Suite
L’algorithme apriori-gen, la phase joindre :
1
2
3
4
insert into Ck
select p[1], p[2], ..p[k − 1], q[k − 1]
from p,q
Where p[1] = q[1]..p[k − 2] = q[k − 2],p[k − 1] < q[k − 1]
la phase effacer
1
2
3
Si L3 = {{123}, {124}, {134}, {135}, {234}},
la phase joindre donne comme résultat C4 = {{1234}, {1345}}
la phase effacer donne le résultat : C4 = {{1234}
L’algorithme sousEns calcule le sous ensemble Ct ⊆ Ck ,
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
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)
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
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
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
Description de l’algorithme Apriori
Implémentation de Apriori sur MapReduce
Implémentation de Apriori sur MATE !
MapReduce et MATE -1
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)
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
Description de l’algorithme Apriori
Implémentation de Apriori sur MapReduce
Implémentation de Apriori sur MATE !
MapReduce et MATE -2
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
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
Description de l’algorithme Apriori
Implémentation de Apriori sur MapReduce
Implémentation de Apriori sur MATE !
MATE : Schéma
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
Description de l’algorithme Apriori
Implémentation de Apriori sur MapReduce
Implémentation de Apriori sur MATE !
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) ;
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
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.
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
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 :
Li un sous-ensemble de longueur i on dit que Li est
localement fréquent ssi il est fréquent dans la catégorie (ou
le cluster) à laquelle il appartient.
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
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 C1 , C2 , .., Ck 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
C1 , C2 , .., Ck .
Tant que candidats n’est pas vide faire :
Soit Ci le premier élément de ”candidats” :
Si Ci 6∈ admis et Ci 6∈ exclu alors
1
2
3
Si Ci est localement fréquent alors mettre-à-jour-admis(Ci ),
exit.
Si Ci est globalement fréquent alors mettre-à-jour-admis (Ci ),
exit.
Sinon, mettre-à-jour-exclus(Ci ), et ajouter tous les
sous-ensembles fréquents inclus dans Ci à la liste candidats
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
Proposition d’un algorithme pour la recherche des sous
ensembles fréquents - 4
mettre-à-jour-admis(Ci ) : ajouter à la liste admis le sous
ensemble Ci et tous les sous-ensembles inclus dans Ci .
mettre-à-jour-exclus(Ci ) : ajouter à la liste exclus le sous
ensemble Ci et tous les sous-ensembles qui incluent Ci .
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
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.
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Cloud Computing et MapReduce
Parallélisation de l’algorithme K-means
Parallélisation de l’algorithme Apriori
Notre approche
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.
séminaire de recherche@LARIS
Fouille de données parallèle et MapReduce
Téléchargement