Une introduction à MapReduce

  • 1,495 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,495
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
67
Comments
0
Likes
1

Embeds 0

No embeds

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