Une introduction à MapReduce
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Une introduction à MapReduce

  • 1,854 views
Uploaded on

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

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

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,854
On Slideshare
1,840
From Embeds
14
Number of Embeds
2

Actions

Shares
Downloads
62
Comments
0
Likes
1

Embeds 14

http://www.altic.org 11
http://altic.org 3

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’UtilisationCommerciale - Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/HUG France SL2013 – Mai 2013Introduction à MapReduceApache Hadoop MapReduceCharly CLAIRMONTAltic - http://altic.orgcharly.clairmont@altic.org@egwada
  • 2. 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
  • 3. 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 basiqueInputFormatMap Sort Reduce OutputFormatNode NodePartitionerMapReduceHDFS(Distributed File System)
  • 4. 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 comprendreMap ReduceKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueEntéesKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueIntermédiaireKey|Value,Key|Value,Key|Value,Key|ValueRésultat= un type de collectionKey|Value,Key|Value,Key|ValueKey|Value,Key|Value
  • 5. 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 demplacement de nœuds● RecordReader● Crée des paires clé-valeur● Conversion des types de données
  • 6. 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 setKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueKey|ValueEntéesExécution de lalgorithme sur chaque ligne séquentiellementMap(K1 key,V1 val,OutputCollector<K2, V2> output,Reporter reporter)
  • 7. 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éegetPartition(K2 key, V2 value, int numPartitions)
  • 8. 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, ShuffleMapMapMapReduceReduceHTTP
  • 9. 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
  • 10. 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ésReduce(K2 key,Iterator<V2> values,OutputCollector<K3,V3> output,Reporter reporter)
  • 11. 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 »
  • 12. 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);}}}
  • 13. 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));}}
  • 14. 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 dexécuter le job à partir desdeux 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);}
  • 15. Ce support est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’UtilisationCommerciale - Pas de Modification 2.0 France. - http://creativecommons.org/licenses/by-nc-nd/2.0/fr/HUG France SL2013 – Mai 2013Introduction à MapReduceMerci !Charly CLAIRMONTAltic - http://altic.orgcharly.clairmont@altic.org@egwada