15

Click here to load reader

Une introduction à MapReduce

Embed Size (px)

DESCRIPTION

A l'occasion de Solution Linux 2013 nous présentons Hadoop à la communauté en France. Ici une introduction à MapReduce.

Citation preview

Page 1: Une introduction à MapReduce

Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/

HUG France SL2013 – Mai 2013

Introduction à MapReduceApache Hadoop MapReduce

Charly CLAIRMONTAltic - http://[email protected]@egwada

Page 2: Une introduction à MapReduce

Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale

- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/

Motivations

● Traiter de larges jeux de données● Traiter de larges volumes de données

● Utiliser 1000 CPU● Sans le tracas de la gestion de la parallélisation /

synchronisation

● Tolérance à la panne

Page 3: Une introduction à MapReduce

Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale

- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/

Architecture basique

Input Format

Map Sort Reduce Output Format

Node Node

Partitioner

MapReduce

HDFS (Distributed File System)

Page 4: Une introduction à MapReduce

Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale

- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/

MapReduce, pour mieux comprendre

Map Reduce

Key|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|Value

Entées

Key|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|Value

Intermédiaire

Key|Value,Key|Value,Key|Value,Key|Value

Résultat

= un type de collection

Key|Value,Key|Value,Key|Value

Key|Value,Key|Value

Page 5: Une introduction à MapReduce

Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale

- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/

MapReduce, Entrées (Input)

● Détermine la façon dont les données sont fractionnées

● Crée des tableaux d' InputSplit[]

● Chaque tableau est un map● Associé à une liste d'emplacement de nœuds

● RecordReader

● Crée des paires clé-valeur● Conversion des types de données

Page 6: Une introduction à MapReduce

Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale

- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/

Mapreduce, Map

● Agit individuellement sur chaque data set

Key|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|Value

Entées

Exécution de l'algorithme sur chaque ligne séquentiellement

Map(K1 key, V1 val, OutputCollector<K2, V2> output,

Reporter reporter)

Page 7: Une introduction à MapReduce

Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale

- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/

MapReduce, Partitionner

● Distribue les paires clés-valeurs

● Décide vers du Reducer cible

● grâce à la clé

– exploite ● une fonction de hachage par défaut● ou une fonction personnalisée

getPartition(K2 key, V2 value, int numPartitions)

Page 8: Une introduction à MapReduce

Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale

- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/

MapReduce, Shuffle

Map

Map

Map

Reduce

Reduce

HTTP

Page 9: Une introduction à MapReduce

Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale

- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/

MapReduce, Sort

● Garantie que les entrées sont triées● Étape finale du Shuffle● Aide à la fusion des entrées du Reducer

Page 10: Une introduction à MapReduce

Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale

- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/

MapReduce, Reduce

● Reçoit les sortie depuis beaucoup de Mappers

● Consolide les valeurs pour les clés intermédiaires

● Regroupe les valeurs selon les clés

Reduce(K2 key, Iterator<V2> values,

OutputCollector<K3,V3> output, Reporter reporter)

Page 11: Une introduction à MapReduce

Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale

- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/

Mapreduce, Sorties (Output)

● Valide

● par rapport à la sortie attendue● Créer un RecordWriter

● qui écrit sur HDFS● organise la sortie en fichiers « morceau-0000x »

Page 12: Une introduction à MapReduce

Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale

- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/

Exemple de programme MapReduce, Map

/** * Une classe Map qui lit les fichiers à traiter */

public static class MapClass extends MapReduceBase implementsMapper<LongWritable, Text, Text, IntWritable> {

private final static IntWritable one = new IntWritable(1); private Text word = new Text();

public void map(LongWritable key, Text value,OutputCollector<Text, IntWritable> output, Reporter reporter)

throws IOException {String line = value.toString();

StringTokenizer itr = new StringTokenizer(line); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); output.collect(word, one);

}}

}

Page 13: Une introduction à MapReduce

Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale

- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/

Exemple de programme MapReduce, Reduce

/** * Une classe Reduce qui compte chaque mot */

public static class Reduce extends MapReduceBase implementsReducer<Text, IntWritable, Text, IntWritable> {

public void reduce(Text key, Iterator<IntWritable> values,OutputCollector<Text, IntWritable> output, Reporter reporter)

throws IOException { int sum = 0; while (values.hasNext()) {

sum += values.next().get();}

output.collect(key, new IntWritable(sum));}

}

Page 14: Une introduction à MapReduce

Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale

- Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/

Exemple de programme MapReduce, le Job

/** * Le composant Driver indique à Hadoop d'exécuter le job à partir des deux composants (classes) précédement définies */

public void run(String inputPath, String outputPath) throws Exception {

JobConf conf = new JobConf(WordCount.class); conf.setJobName("wordcount");

// the keys are words (strings) conf.setOutputKeyClass(Text.class); // the values are counts (ints) conf.setOutputValueClass(IntWritable.class);

conf.setMapperClass(MapClass.class);

conf.setReducerClass(Reduce.class);

FileInputFormat .addInputPath(conf, new Path(inputPath)); FileOutputFormat .setOutputPath(conf, new Path(outputPath));

JobClient.runJob(conf);}

Page 15: Une introduction à MapReduce

Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/

HUG France SL2013 – Mai 2013

Introduction à MapReduce

Merci !

Charly CLAIRMONTAltic - http://[email protected]@egwada