Ich werde nicht über die Verwendung von Maven sprechen. Es gibt viele online und es gab im Laufe der Jahre keine großen Veränderungen. Hier werde ich nur vorstellen, wie man eine Hadoop -Entwicklungsumgebung baut.
1. Erstellen Sie zuerst ein Projekt
Kopieren Sie den Code wie folgt: MVN -Archetyp: generieren Sie -dgroupid = my.hadoopstudy -dartifactid = hadoopstudy -darchetypeartifactid = maven -archetype -quickstart -dinteractivemode = false
2. Fügen Sie dann die Hadoop-Abhängigkeitspakete von Hadoop-Common, Hadoop-Client und Hadoop-HDFs in der Datei pom.xml hinzu. Die hinzugefügte Datei pom.xml lautet wie folgt
<project xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://maven.apache.org/pom/4.0.0" xsi: schemalocation = "http http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>my.hadoopstudy</groupId> <artifactId>hadoopstudy</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <Name> Hadoopstudy </name> <URL> http://maven.apache.org </url> <depeopcies> <depeaponcy> <gruppe.apache.apache.hadoop </GroupID> <artifactid> hadoop-common </artifactID> <version> </Version> </Version> </fusion> </fusion> </fusion> </vl. <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs</artifactId> <version>2.5.1</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.5.1</version> </dependency> <dependency> <gruppeId> junit </gruppeId> <artifactId> junit </artifactId> <version> 3.8.1 </Version> <Schops
3. Test
3.1 Zuerst können wir die Entwicklung von HDFs testen. Hier gehen wir davon aus
Paket my.hadoopstudy.dfs; import org.apache.hadoop.conf.configuration; import org.apache.hadoop.fs.fsdataoutputstream; org.apache.hadoop.fs.Filestatus; org.apache.hadoop.io.ioutils; import Java.io.inputStream; import Java.net.uri; public class test {public static void main (String [] args) löst Ausnahme aus {String uri = "hdfs: //9.111.254.189: 9000/"; Configuration config = new configuration (); Dateisystem fs = Dateisystem.get (URI.Create (URI), config); // Auflisten Sie alle Dateien und Verzeichnisse unter dem Verzeichnis/user/fKong/Verzeichnis im HDFS filestatus [] states = fs.ListStatus (neuer Pfad ("/user/fKong"); für (Filestatus Status: Status) {System.out.println (Status); } // Erstellen Sie eine Datei im Verzeichnis/user/fKong von HDFs und schreiben Sie eine Textzeile fsdataoutputStream os = fs.create (neuer Pfad ("/user/fkong/test.log"); os.write ("Hallo Welt!". GetBytes ()); os.flush (); os.close (); // Zeigen Sie den Inhalt der angegebenen Datei unter/user/fKong in HDFS InputStream is = fs.open (neuer Pfad ("/user/fkong/test.log")); Ioutils.copyBytes (IS, System.out, 1024, True); }} 3.2 Testen von MapReduce -Jobs
Der Testcode ist wie folgt relativ einfach:
Paket my.hadoopstudy.mapreduce; import org.apache.hadoop.conf.configuration; import org.apache.hadoop.fs.path; import org.apache.hadoop.io.intwritable; 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.FileTput.FileStformat; org.apache.hadoop.util.genericOptionsParser; import Java.io.ioException; public class EventCount {public static class myMapper erweitert Mapper <Objekt, Text, Text, intwritable> {private endgültige statische statische statische intreide = new intribleable (1); private text event = neuer text (); public void map (Objektschlüssel, Textwert, Kontextkontext) löst IOException, InterruptedException {int idx = value.toString (). Indexof ("") aus; if (idx> 0) {string e = value.toString (). substring (0, idx); Ereignis.Set (e); context.write (Ereignis, eins); }}} öffentliche statische Klasse MyReducer erweitert Reduzierer <text, intwrible, text, intRabble> {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 Ausnahme aus {configuration conf = new configuration (); String [] otherArgs = neuer Generikoptionssparser (conf, args) .getRemainingArgs (); if (otherArgs.length <2) {System.err.println ("Verwendung: eventCount <in> <out>"); System.exit (2); } Job Job = Job.getInstance (conf, "Ereignisanzahl"); Job.setJarByClass (EventCount.Class); Job.SetMapperClass (MyMapper.Class); Job.SetCombinerClass (MyReducer.Class); Job.SetReDuCerClass (MyReducer.Class); Job.SetoutputKeyClass (text.class); Job.SetoutputValueClass (intRable.class); FileInputFormat.addInputPath (Job, neuer Pfad (andereArgs [0])); FileOutputFormat.SetoutputPath (Job, neuer Pfad (andere ARGs [1])); System.exit (job.waitforCompletion (true)? 0: 1); }}Führen Sie den Befehl "MVN-Paket" aus, um das JAR-Paket Hadoopstudy-1.0-Snapshot.jar zu generieren und die JAR-Datei in das Hadoop-Installationsverzeichnis zu kopieren.
Hier gehen wir davon aus, dass wir die Ereignisinformationen in mehreren Protokolldateien analysieren müssen, um die Anzahl der Ereignisse zu zählen. Erstellen Sie also ein Verzeichnis und eine Datei
/tmp/input/event.log.1
/tmp/input/event.log.2
/tmp/input/event.log.3
Da wir hier nur eine Spalte erstellen müssen, kann der Inhalt jeder Datei gleich sein, wenn der Inhalt wie folgt ist
Job_new ...
Job_new ...
Job_finish ...
Job_new ...
Job_finish ...
Kopieren Sie diese Dateien dann zu HDFs
Die Codekopie lautet wie folgt: $ bin/hdfs dfs -put/tmp/input/user/fkong/Eingabe
Führen Sie MapReduce -Job aus
Kopieren Sie den Code wie folgenden
Ausführungsergebnisse anzeigen
Die Codekopie lautet wie folgt: $ bin/hdfs dfs -cat/user/fkong/output/part-r-00000
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.