Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

Une introduction à MapReduce

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Prochain SlideShare
Un introduction à Pig
Un introduction à Pig
Chargement dans…3
×

Consultez-les par la suite

1 sur 15 Publicité
Publicité

Plus De Contenu Connexe

Diaporamas pour vous (20)

Les utilisateurs ont également aimé (20)

Publicité

Similaire à Une introduction à MapReduce (20)

Plus par HUG France (20)

Publicité

Une introduction à MapReduce

  1. 1. 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 Apache Hadoop MapReduce Charly CLAIRMONT Altic - http://altic.org charly.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 basique Input Format Map Sort Reduce Output Format Node Node Partitioner MapReduce HDFS (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 comprendre Map Reduce Key|Value Key|Value Key|Value Key|Value Key|Value Key|Value Key|Value Key|Value Key|Value Entées Key|Value Key|Value Key|Value Key|Value Key|Value Key|Value Key|Value Key|Value Key|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
  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 d'emplacement 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 set Key|Value Key|Value Key|Value Key|Value Key|Value Key|Value Key|Value Key|Value Key|Value Entées Exécution de l'algorithme sur chaque ligne séquentiellement Map( 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ée getPartition(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, Shuffle Map Map Map Reduce Reduce HTTP
  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és Reduce( 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 implements Mapper<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 implements Reducer<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 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); }
  15. 15. 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 CLAIRMONT Altic - http://altic.org charly.clairmont@altic.org @egwada

×