In diesem Artikel geht davon aus, dass sich die Hadoop -Umgebung auf einer Remote -Maschine (z.
Hinweis: Dieser Artikel Eclipse/Intellij IDEA Remote Debugging Hadoop 2.6.0 hauptsächlich Referenzen und wurde basierend darauf angepasst.
Da ich 32-Bit-Software auf Win7 64-Bit installiere, wie z.
Softwareversion:
Betriebssystem: Win7 64-Bit
Eclipse: Eclipse-Jee-Mars-2-Win32
Java: 1.8.0_77 32-Bit
Hadoop: 2.5.2
1. Installieren Sie Hadoop
1. Finden Sie ein Verzeichnis in Win7, um Hadoop-2.5.2.tar.gz zu dekomprimieren, z. B. d: /app/hadoop-2.5.2/
2. Konfigurieren Sie Umgebungsvariablen
Hadoop_home = d: /app/hadoop-2.5.2/
2. Installieren Sie das Hadoop Eclipse -Plugin
1. Laden Sie Hadoop-Eclipse-Plugin herunter
Hadoop-Eclipse-Plugin ist ein Hadoop-Plugin, das speziell für Eclipse verwendet wird, das den Verzeichnis und den Dateiinhalt von HDFs direkt in der IDE-Umgebung anzeigen kann. Der Quellcode wird auf GitHub gehostet und die offizielle Website-Adresse lautet https://github.com/winghc/hadoop2x-eclipse-plugin. Laden Sie Hadoop-Eclipse-Plugin-2.6.0.jar im Release-Ordner herunter.
2. Laden Sie das Hadoop-Plug-in-Paket für Windows 32-Bit-Plattform (Hadoop.dll, Winutils.exe) herunter
Da unsere Software-Umgebung 32-Bit ist, müssen wir 32-Bit-Hadoop.dll und Winutils.exe herunterladen. Die Download -Adresse ist für Baidu Hadoop.dll 32 verfügbar
Laden Sie dies zum Beispiel herunter: http://xiazai.vevb.com/201607/yuanma/eclipse-hadoop(vevb.com).rar
Kopieren Sie Winutils.exe in das Verzeichnis $ hadoop_home/bin und kopieren Sie Hadoop.dll in das Verzeichnis c:/windows/sywow64 (Hinweis: Da unser Betriebssystem 64-Bit ist und die Software 32-Bit ist, kopieren wir es in dieses Verzeichnis.
3. Konfigurieren Sie das Hadoop-Eclipse-Plugin-Plugin
Starten Sie Eclipse, Fenster-> Einstellungen-> Hadoop-Karte/Reduzieren Sie das Stammverzeichnis von Hadoop auf Win7 (dh $ hadoop_home)
MAP/REDUCTION VERHALTEN
Windows-> Ansichts-> Andere Karte anzeigen/reduzieren Standorte
Fügen Sie dann einen neuen Standort in das Feld Karte/Reduzieren von Standorten hinzu
Konfigurieren Sie wie folgt
Der Standortname ist nur ein Name. Rufen Sie ihn einfach an
MAP/Reduzierung (v2) Master -Host hier ist die IP -Adresse, die dem Hadoop -Master in der virtuellen Maschine entspricht. Der folgende Port entspricht dem vom Attribut dfs.datanode.ipc.address in HDFS-sit.xml angegebenen Port.
Der Port hier des DFS-Master-Ports entspricht dem von Fs.DefaultFS in Core-Site.xml angegebenen Port
Der letzte Benutzername sollte mit dem Benutzernamen übereinstimmen, der Hadoop in der virtuellen Maschine ausführt. Ich installierte und lief Hadoop 2.6.0 mit Hadoop, also füllen Sie Hadoop hier aus. Wenn Sie es mit Root installiert haben, ändern Sie es entsprechend in Root.
Nachdem diese Parameter angegeben sind, klicken Sie auf Fertig stellen und in der Eclipse, um zu wissen, wie man eine Verbindung zu Hadoop herstellt. Wenn alles gut läuft, können Sie die Verzeichnisse und Dateien in HDFs im Project Explorer -Panel sehen.
Sie können mit der rechten Maustaste auf die Datei klicken und zum Versuchen löschen. Normalerweise ist das erste Mal erfolglos, und es wird viele Dinge geben. Die allgemeine Idee ist, dass es nicht genügend Berechtigungen gibt. Der Grund dafür ist, dass der aktuelle Win7 -Login -Benutzer nicht der laufende Benutzer von Hadoop in der virtuellen Maschine ist. Es gibt viele Lösungen. Sie können beispielsweise einen neuen Hadoop -Administratorbenutzer bei Win7 erstellen, dann zu Hadoop wechseln, um sich bei Win7 anzumelden, und dann Eclipse zur Entwicklung verwenden. Dies ist jedoch zu ärgerlich, der einfachste Weg:
Hinzufügen in HDFS-Site.xml
<Spertage> <name> dfs.permissions.Enabled </name> <wert> false </value> </Eigenschaft>
Kurz gesagt, es soll die Sicherheitserkennung von Hadoop vollständig ausschalten (es besteht keine Notwendigkeit für diese in der Lernphase, tun Sie dies nicht, wenn sie offiziell erzeugt wird), starten Sie Hadoop schließlich neu, gehen Sie dann zu Eclipse und wiederholen Sie die Löschdatei -Operation jetzt und es sollte in Ordnung sein.
HINWEIS: Wenn Sie keine Verbindung herstellen können, versuchen Sie es zuerst Telnet 192.168.1.6 9000 (ersetzen Sie die IP und den Port durch IP- und Port -Hadoop -Server und Port), um sicherzustellen, dass der Port zugänglich ist.
Wenn Telnet fehlschlägt, besteht möglicherweise ein Problem mit dem Wert von Fs.DefaultFs in Core-Site.xml. Beispielsweise ist die Konfiguration Localhost: 9000. Sie können in Betracht ziehen, Localhost durch den Hostnamen zu ersetzen
3. Schreiben Sie Wordcount -Beispiele
1. Erstellen Sie ein neues Projekt und wählen Sie MAP/Reduzierungsprojekt aus
Nur der nächste und erstellen Sie dann eine neue Klasse wodcount.java -Code wie folgt:
Java.io.ioException importieren; import Java.util.stringTokenizer; import org.apache.hadoop.conf.configuration; org.apache.hadoop.mapreduce.mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.fileinputformat; importieren org.apache.hadoop.mapreduce.lib.output.FilePput.FileTFormat; org.apache.hadoop.util.genericOptionsParser; öffentliche Klasse WordCount {öffentliche statische Klassen -Tokenizermapper erweitert Mapper <Objekt, Text, Text, intRabitable> {private endgültige statische intRabitable One = new intWribleable (1); privates text word = neuer text (); public void map (Objektschlüssel, Textwert, Kontextkontext) löst IOException, InterruptedException aus {StringTokenizer itr = new StringTokenizer (value.toString ()); while (itr.hasmoretokens ()) {Word.set (itr.NextToken ()); context.write (Wort, eins); }}} public static class IntsumReDucer erweitert Reduzierer <Text, intRabitable, text, intwritable> {private intRable result = new intwrable (); public void recond (Textschlüssel, iterable <intRabitable> Werte, Kontextkontext) löst IOException, InterruptedException {int sum = 0; für (intwritable val: Werte) {sum += val.get (); } result.set (sum); context.write (Schlüssel, Ergebnis); }} public static void main (String [] args) löst eine Ausnahme aus {configuration conf = new configuration (); String [] otherArgs = neuer Generikoptionssparser (conf, args) .getRemainingArgs (); if (otherArgs.length <2) {System.err.println ("Verwendung: WordCount <in> [<in> ...] <Out>"); System.exit (2); } Job Job = Job.getInstance (conf, "Wortzahl"); Job.setJarByClass (WordCount.Class); Job.SetMapperClass (tokenizermpper.class); Job.SetCombinerClass (intsumReducer.class); Job.SetReDuCerClass (intsumReducer.Class); Job.SetoutputKeyClass (text.class); Job.SetoutputValueClass (intRable.class); für (int i = 0; i <otherArgs.length - 1; ++ i) {fileInputFormat.addinputPath (Job, neuer Pfad (otherArgs [i]); } FileOutputFormat.SetoutputPath (Job, neuer Pfad (andereArgs [andereArgs.length - 1])); System.exit (job.waitforCompletion (true)? 0: 1); }}Erstellen Sie dann ein log4j.properties im src -Verzeichnis, der Inhalt lautet wie folgt: (Um die Bequemlichkeit des Laufens zu überprüfen, überprüfen Sie verschiedene Ausgänge)
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.activeio.journal = infolog4j.appender.stdout = org.apache.log4j.conoleAppenderLog4j.appender.stdout.layout = org.apache.log4j.patternLayoutLog4j.appender.stdout.conversionStumn =%d {Absoluation} | %-5,5p | %-16.16t | %-32,32c {1} | %-32,32C %4L | %m%nDie endgültige Verzeichnisstruktur lautet wie folgt:
2. Konfigurieren Sie die laufenden Parameter
Da WordCount eine Datei eingeben soll, um Wörter zu zählen und dann in einen anderen Ordner auszugeben, geben Sie also zwei Parameter an, beziehen Sie sich auf die obige Abbildung. Geben Sie in Programmargumente ein
HDFS: //192.168.1.6: 9000/user/nub1.txt
HDFS: //192.168.1.6: 9000/Benutzer/Ausgabe
Beachten Sie, dass, wenn die Datei user/nub1.txt sie nicht hat, diese bitte zuerst manuell hochladen (mit der rechten Maustaste des DFS-Standort-Tools in Eclipse) und dann/Ausgabe/nicht existieren. Andernfalls wird auch ein Fehler gemeldet, wenn das Programm bis zum Ende läuft und feststellt, dass das Zielverzeichnis existiert.
OK, einfach renn
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.