Cet article suppose que l'environnement Hadoop est sur une machine distante (comme un serveur Linux), et la version Hadoop est 2.5.2
Remarque: Cet article Eclipse / Intellij Idea Idea Demote Debugging Hadoop 2.6.0 Références principalement et a été ajusté en fonction de celui-ci.
Puisque j'aime installer un logiciel 32 bits sur Win7 64 bits, comme un JDK 32 bits et une éclipse 32 bits, bien que le système d'exploitation de cet article soit WIN7 64 bits, tous les logiciels sont 32 bits.
Version du logiciel:
Système d'exploitation: Win7 64 bits
Eclipse: Eclipse-Jee-Mars-2-Win32
Java: 1.8.0_77 32 bits
Hadoop: 2.5.2
1. Installer Hadoop
1. Trouvez un répertoire dans Win7 pour décompresser hadoop-2.5.2.tar.gz, comme d: /app/hadoop-2.5.2/
2. Configurer les variables d'environnement
Hadoop_home = d: /app/hadoop-2.5.2/
2. Installer le plugin Hadoop Eclipse
1. Télécharger Hadoop-Eclipse-Plugin
Hadoop-Eclipse-Plugin est un plugin Hadoop spécialement utilisé pour Eclipse, qui peut afficher le répertoire et le contenu de fichier de HDFS directement dans l'environnement IDE. Son code source est hébergé sur GitHub, et l'adresse officielle du site Web est https://github.com/winghc/hadoop2x-eclipse-plugin. Téléchargez Hadoop-Eclipse-Plugin-2.6.0.jar dans le dossier de version.
2. Téléchargez le package du plug-in Hadoop pour la plate-forme Windows 32 bits (Hadoop.dll, WinUtils.exe)
Étant donné que notre environnement logiciel est de 32 bits, nous devons télécharger 32 bits hadoop.dll et winutils.exe. L'adresse de téléchargement est disponible pour baidu hadoop.dll 32
Par exemple, téléchargez ceci: http://xiazai.vevb.com/201607/yuanma/eclipse-hadoop(vevb.com).rar
Copiez WinUtils.exe dans le répertoire $ HADOOP_HOME / BIN, et copiez Hadoop.dll dans le répertoire C: / Windows / Syswow64 (Remarque: Puisque notre système d'exploitation est 64 bits et que le logiciel est 32 bits, nous le copie dans ce répertoire. En outre, si votre système d'exploitation est 32 bits, puis le coprirons vers le C: / Windwos / System32 Directory)
3. Configurer le plugin Hadoop-Eclipse-Plugin
Démarrer l'éclipse, la fenêtre-> Préférences-> Hadoop Map / Réduction Spécifiez le répertoire racine de Hadoop sur Win7 (c'est-à-dire: $ hadoop_home)
Mapte de commutation / Réduction de la vue
Windows-> Afficher la vue-> Autre carte / réduction des emplacements
Ensuite, ajoutez un nouvel emplacement dans le panneau Map / Réduction des emplacements ci-dessous
Configurer comme suit
Le nom de l'emplacement est juste un nom, appelez-le
MAP / Réduction (V2) Hôte maître voici l'adresse IP correspondant au maître Hadoop dans la machine virtuelle. Le port ci-dessous correspond au port spécifié par l'attribut dfs.datanode.ipc.Address dans hdfs-site.xml
Le port ici de DFS Master Port correspond au port spécifié par Fs.defaultfs dans Core-site.xml
Le dernier nom d'utilisateur doit être le même que le nom d'utilisateur qui exécute Hadoop dans la machine virtuelle. J'ai installé et couru Hadoop 2.6.0 avec Hadoop, alors remplissez Hadoop ici. Si vous l'avez installé avec root, changez-le en racine en conséquence.
Une fois ces paramètres spécifiés, cliquez sur Terminer et Eclipse pour savoir comment se connecter à Hadoop. Si tout se passe bien, vous pouvez voir les répertoires et les fichiers dans HDFS dans le panneau Explorer Project.
Vous pouvez cliquer avec le bouton droit sur le fichier et sélectionner Supprimer pour essayer. Habituellement, la première fois est échoué, et il y aura beaucoup de choses. L'idée générale est que les autorisations sont insuffisantes. La raison en est que l'utilisateur de connexion Win7 actuel n'est pas l'utilisateur exécutif de Hadoop dans la machine virtuelle. Il existe de nombreuses solutions. Par exemple, vous pouvez créer un nouvel utilisateur d'administrateur Hadoop sur Win7, puis passer à Hadoop pour vous connecter à Win7, puis utiliser Eclipse pour se développer. Cependant, c'est trop ennuyeux, le moyen le plus simple:
Ajouté dans HDFS-site.xml
<propriété> <nom> dfs.permissions.enabled </name> <value> false </value> </prophed>
En bref, il s'agit de désactiver complètement la détection de sécurité de Hadoop (il n'y en a pas besoin dans la phase d'apprentissage, ne le faites pas lorsqu'il est officiellement produit), enfin redémarrer Hadoop, puis aller à Eclipse et répéter l'opération de fichier de suppression tout à l'heure, et ça devrait aller.
Remarque: Si vous ne pouvez pas vous connecter, essayez d'abord Telnet 192.168.1.6 9000 (veuillez remplacer l'IP et le port par votre propre IP et port Hadoop Server) pour vous assurer que le port est accessible.
Si Telnet échoue, il se peut qu'il y ait un problème avec la valeur de fs.defaultfs dans core-site.xml. Par exemple, la configuration est localhost: 9000. Vous pouvez envisager de remplacer LocalHost par le nom d'hôte
3. Écrivez des exemples de nombre de mots
1. Créez un nouveau projet et sélectionnez Carte / Réduction du projet
Juste le suivant, puis créez un nouveau code wodcount.java comme suit:
Importer java.io.ioException; import java.util.stringTokenizer; import org.apache.hadoop.conf.configuration; import org.apache.hadoop.fs.path; import org.apache.hadoop.io.intwitable; import org.apache.hadoop.io.text; importation org.apache.hadoop.mapache. org.apache.hadoop.mapreduce.mapper; import org.apache.hadoop.mapreduce.reducer; import org.apache.hadoop.mapreduce.lib.input.fileinputt org.apache.hadoop.util.GenericOptionsParser; public class wordCount {public static class tokenizermapper étend le mappeur <objet, texte, texte, intrwitable> {privé final statique intrwitable one = new intwitable (1); Texte privé Word = new Text (); MAP public void (clé d'objet, valeur du texte, contexte de contexte) lève IOException, InterruptedException {StringTokenizer iTr = new StringTokenizer (value.toString ()); while (itr.hasmoretokens ()) {word.set (itr.nextToken ()); context.write (word, un); }}} Classe statique publique IntsumReducer étend le réducteur <texte, intrwitable, texte, intrwitable> {private intwitable result = new intwitable (); public void réduction (clé de texte, valeurs iTable <ntwitable>, contexte de contexte) lève IOException, InterruptedException {int sum = 0; for (intwitable val: valeurs) {sum + = val.get (); } result.set (sum); context.write (clé, résultat); }} public static void main (String [] args) lève une exception {configuration conf = new Configuration (); String [] AUTHARGS = new GenericOptionsParser (conf, args) .getReMingingArgs (); if (otherArgs.Length <2) {System.err.println ("usage: wordCount <in> [<in> ...] <out>"); System.exit (2); } Job Job = Job.getInstance (conf, "Word Count"); job.setjarbyclass (wordCount.class); job.setMapperClass (tokenizermapper.class); job.setcombinerclass (intsumReducer.class); job.setReducerclass (intsumReducer.class); job.setOutputKeyClass (text.class); job.setOutputValuClass (intwitable.class); pour (int i = 0; i <alternative.Length - 1; ++ i) {fileInputFormat.addinputPath (Job, new Path (AUTHARGS [i])); } FileOutputFormat.setOutputPath (Job, New Path (OtherArgs [ATHOTHARGS.LENGTH - 1])); System.exit (Job.WaitForCompletion (true)? 0: 1); }}Créez ensuite un log4j.properties dans le répertoire SRC, le contenu est le suivant: (Pour la commodité de l'exécution, vérifiez diverses sorties)
log4j.rootlogger = info, stdout # log4j.logger.org.springframework = info # log4j.logger.org.apache.activemq = info # log4j.logger.org.apache. activemq.spring = warn # log4j.logger.org.apache.activemq.store.journal = info # log4j.logger.org.apache.activemq.or g.activeo.journal = infolog4j.appendender.stdout = org.apache.log4j.consoleAppenderLog4j.appender.stdout.layout = org.apache.log4j.patternlayoutlog4j.apprender.stdout.layout.conversionpattern =% d {Absolute} | % -5.5p | % -16.16t | % -32.32c {1} | % -32,32 ° C% 4L | % m% nLa structure du répertoire final est la suivante:
2. Configurer les paramètres en cours d'exécution
Parce que WordCount doit entrer un fichier pour compter les mots, puis sortir dans un autre dossier, alors donnez deux paramètres, reportez-vous à la figure ci-dessus, entrez dans les arguments du programme
hdfs: //192.168.1.6: 9000 / user / nub1.txt
hdfs: //192.168.1.6: 9000 / utilisateur / sortie
Notez que si le fichier utilisateur / nub1.txt ne l'a pas, veuillez le télécharger manuellement (en utilisant le clic droit de l'outil de localisation DFS dans Eclipse), puis / out / output / ne doit pas exister. Sinon, si le programme se déroule jusqu'à la fin et constate que le répertoire cible existe, une erreur sera également signalée.
Ok, il suffit de courir
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.