Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Une introduction à MapReduce

3,056 views

Published on

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

  • Be the first to comment

Une introduction à MapReduce

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×