MapReduce deux façons d'exécuter des programmes sur Hadoop

Avant d' apprendre la connaissance de la période de Hadoop de temps pour apprendre la base théorique de l'opération proprement dite en même temps , il peut être plus habile, ado , il a dit à courir sur Hadoop un des compte le plus de mots simples programme


Tout d'abord je voudrais coller le code source du programme pour votre code de référence est divisé en trois parties écrites Run, la phase la carte, réduire étape


Carte:


  
  
  1. emballer wordsCount;
  2. importation java.io.IOException;
  3. importation java.util.StringTokenizer;
  4. importation org.apache.hadoop.io.IntWritable;
  5. importation org.apache.hadoop.io.LongWritable;
  6. importation org.apache.hadoop.io.Text;
  7. importation org.apache.hadoop.mapreduce.Mapper;
  8. publique classe WordsMapper étend Mapper < LongWritable , texte , texte , IntWritable > {
  9. @Passer outre
  10. protégé vide carte (touche LongWritable, la valeur du texte, Mapper <LongWritable, texte, texte, IntWritable> contexte .Context)
  11. jette IOException, InterruptedException {
  12. Ligne de chaîne = value.toString ();
  13. StringTokenizer st = nouveau StringTokenizer (ligne);
  14. tandis que (st.hasMoreTokens ()) {
  15. Chaîne mot = st.nextToken ();
  16. context.write ( nouveau texte (Word), nouveau IntWritable ( 1 ));
  17. }
  18. }
  19. }




Réduire:


  
  
  1. emballer wordsCount;
  2. importation java.io.IOException;
  3. importation org.apache.hadoop.io.IntWritable;
  4. importation org.apache.hadoop.io.Text;
  5. importation org.apache.hadoop.mapreduce.Reducer;
  6. publique classe WordsReduce étend Réducteur < texte , IntWritable , texte , IntWritable > {
  7. @Passer outre
  8. protégé vide réduire (clé du texte, Iterable <IntWritable> iterator,
  9. Réducteur <texte, IntWritable, texte, IntWritable> contexte .Context) jette IOException, InterruptedException {
  10. // méthode de génération automatique de suggérer les moignons
  11. int I = 0 ;
  12. pour (i IntWritable: iterator) {
  13. sum = sum + i.get ();
  14. }
  15. context.write (key, nouveau IntWritable (somme));
  16. }
  17. }



Courir:


  
  
  1. emballer wordsCount;
  2. importation org.apache.hadoop.conf.Configuration;
  3. importation org.apache.hadoop.fs.Path;
  4. importation org.apache.hadoop.io.IntWritable;
  5. importation org.apache.hadoop.io.Text;
  6. importation org.apache.hadoop.mapreduce.Job;
  7. importation org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
  8. importation org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
  9. importation org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
  10. importation org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
  11. publique classe Run {
  12. publique statique vides principaux (String [] args) lance Exception {
  13. // méthode de génération automatique de suggérer les moignons
  14. Configuration Configuration = nouvelle configuration ();
  15. Métier = nouveau Job (configuration);
  16. job.setJarByClass (Run.class);
  17. job.setJobName ( "mots comptent!" );
  18. job.setOutputKeyClass (Text.class);
  19. job.setOutputValueClass (IntWritable.class);
  20. job.setInputFormatClass (TextInputFormat.class);
  21. job.setOutputFormatClass (TextOutputFormat.class);
  22. job.setMapperClass (WordsMapper.class);
  23. job.setReducerClass (WordsReduce.class);
  24. FileInputFormat.addInputPath (emploi, nouveau chemin ( "hdfs: //192.168.1.111: 9000 / utilisateur / entrée / wc /" ));
  25. FileOutputFormat.setOutputPath (emploi, nouveau chemin ( "hdfs: //192.168.1.111: 9000 / utilisateur / résultat /" ));
  26. job.waitForCompletion ( vrai );
  27. }
  28. }

Exécuter à l'intérieur des chemins d'entrée et de sortie en fonction de leur modification à

Ce programme ne doit l'expliquer se trouve partout


Tout d'abord exécuté sur Hadoop ce programme de deux façons


Première méthode: pour compiler leur propre logiciel et Hadoop connecté (j'utilise MyEclipse pour relier Hadoop), exécutez le programme directement. tutoriels myeclipse seront connectés Hadoop Je donnerai un lien pour votre référence à la fin de l'article.




Voir le message suivant cela signifie que vous réussissez , vous alors votre dossier de sortie qui sera en mesure de voir les résultats de l'opération


Le second fichier qui est la sortie du contenu





La deuxième méthode: le MapReduce emballé dans un fichier jar

Voici une méthode brève de la parole de l'emballage



Ensuite, l'étape suivante peut être complétée


Sur les fichiers jar emballés à votre machine d'installation Hadoop (mon cluster Hadoop est installé dans la machine virtuelle Linux) après avoir utilisé passe SSH sur le pot:


Hadoop fichier exécutable dans le répertoire bin sous votre répertoire d'installation Hadoop, puis procédez comme suit là-dessus:


En vertu de la déclaration pour expliquer ma coquille


/home/xiaohuihui/wordscount.jar: l'emplacement du fichier jar après que le paquet (propagation emplacement de la machine virtuelle)

wordsCount / Run: Le nom du lieu de votre fonction principale du paquet jar (fonction principale est ici Run.class) peut ouvrir votre lecteur de fichier jar saura


Vous pouvez également ajouter un chemin d'entrée et de sortie de fichier, mais que je l'ai mis en place après cette déclaration dans mon programme

La sortie suivante après le shell si vous exécutez l'instruction ci-dessus, félicitations à vous, le succès! !



Vous pouvez voir les résultats dans votre Eclipse connecté vue Hadoop, il peut aussi HDFS page pour afficher le système de fichiers (localhost: 50070).


Il y a aussi une étape très importante est, avant d' exécuter pour assurer votre Hadoop a commencé, vous pouvez voir si votre processus de Hadoop du cluster a été lancé par JPS



Eclipse 连接 Hadoop: http: //blog.csdn.net/xjavasunjava/article/details/12320045


Publié 31 articles originaux · louanges gagnées 0 · Vues 855

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45678149/article/details/104978864
conseillé
Classement