GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So führen Sie das Hadoop MapReduce-Programm unter Ubuntu 16.04 aus

In diesem Blog zeige ich Ihnen, wie Sie ein MapReduce-Programm ausführen. MapReduce ist einer der Kernbestandteile von Apache Hadoop, es ist die Verarbeitungsschicht von Apache Hadoop. Bevor ich Ihnen also zeige, wie man ein MapReduce-Programm ausführt, möchte ich Ihnen kurz MapReduce erklären.

MapReduce ist ein System zur parallelen Verarbeitung großer Datensätze. MapReduce reduziert die Daten zu Ergebnissen und erstellt eine Zusammenfassung der Daten. Ein MapReduce-Programm besteht aus zwei Teilen - Mapper und Reducer. Nachdem der Mapper seine Arbeit beendet hat, starten nur noch Reducer.

Mapper : Es ordnet eingegebene Schlüssel/Wert-Paare einem Satz von Zwischenschlüssel/Wert-Paaren zu.

Reduzierer : Es reduziert eine Menge von Zwischenwerten, die einen gemeinsamen Schlüssel haben, auf eine kleinere Menge von Werten.

Grundsätzlich stellen wir im wordcount mapreduce-Programm Eingabedatei(en) bereit – jede beliebige Textdatei als Eingabe. Wenn das mapreduce-Programm startet, durchläuft es folgende Prozesse:

Aufteilen : Es teilt jede Zeile in der Eingabedatei in Wörter auf.

Zuordnung : Es bildet ein Schlüsselwertpaar, wobei word der Schlüssel und 1 der jedem Schlüssel zugewiesene Wert ist.

Shuffling : Gemeinsame Schlüsselwertpaare werden gruppiert.

Reduzierung : Die Werte ähnlicher Schlüssel werden addiert.

Laufendes MapReduce-Programm

Ein MapReduce-Programm ist in Java geschrieben. Und meistens wird Eclipse IDE für die Programmierung von den Entwicklern verwendet. Daher zeige ich Ihnen in diesem Blog, wie Sie ein MapReduce-Programm aus der Eclipse-IDE in eine JAR-Datei exportieren und auf einem Hadoop-Cluster ausführen.

Mein MapReduce-Programm befindet sich in meiner Eclipse-IDE.

Um dieses MapReduce-Programm nun auf einem Hadoop-Cluster auszuführen, exportieren wir das Projekt als JAR-Datei. Wählen Sie in der Eclipse-IDE die Option Datei und klicken Sie auf Exportieren. Wählen Sie in der Java-Option die Jar-Datei aus und klicken Sie auf Weiter.

Wählen Sie das Wordcount-Projekt aus und geben Sie den Pfad und den Namen für die JAR-Datei an, ich behalte sie wordcount.jar. Klicken Sie zweimal auf Weiter.

Klicken Sie nun auf Durchsuchen und wählen Sie die Hauptklasse aus und klicken Sie schließlich auf Fertig stellen, um die JAR-Datei zu erstellen. Falls Sie eine der folgenden Warnungen erhalten, klicken Sie einfach auf OK.

Überprüfen Sie, ob Ihr Hadoop-Cluster aktiv ist und funktioniert oder nicht.

Befehl: jps

hadoop@hadoop-VirtualBox:~$ jps

3008 NodeManager

3924 Jps

2885 ResourceManager

2505 DataNode

3082 JobHistoryServer

2716 SecondaryNameNode

2383 NameNode

hadoop@hadoop-VirtualBox:~$

Wir haben unsere Eingabedatei auf HDFS für das Wordcount-Programm.

hadoop@hadoop-VirtualBox:~$ hdfs dfs -put input /

hadoop@hadoop-VirtualBox:~$ hdfs dfs -cat /input

This is my first mapreduce test

This is wordcount program

hadoop@hadoop-VirtualBox:~$

Führen Sie nun die Datei wordcount.jar mit dem folgenden Befehl aus.

Hinweis: Da wir beim Export von wordcount.jar die Hauptklasse ausgewählt haben, muss die Hauptklasse im Befehl nicht erwähnt werden.

Befehl: hadoop jar wordcount.jar /input /output

hadoop@hadoop-VirtualBox:~$ hadoop jar wordcount.jar /input /output

16/11/27 22:52:20 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:
8032

16/11/27 22:52:22 WARN mapreduce.JobResourceUploader: Hadoop command-line option 
parsing not performed. Implement the Tool interface and execute your application 
with ToolRunner to remedy this.

16/11/27 22:52:27 INFO input.FileInputFormat: Total input paths to process : 1

16/11/27 22:52:28 INFO mapreduce.JobSubmitter: number of splits:1

16/11/27 22:52:29 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_14802
67251741_0001

16/11/27 22:52:32 INFO impl.YarnClientImpl: Submitted application application_14802
67251741_0001

16/11/27 22:52:33 INFO mapreduce.Job: The url to track the job: http://hadoop-Virtu
alBox:8088/proxy/application_1480267251741_0001/

16/11/27 22:52:33 INFO mapreduce.Job: Running job: job_1480267251741_0001

16/11/27 22:53:20 INFO mapreduce.Job: Job job_1480267251741_0001 running in uber mo
de : false

16/11/27 22:53:20 INFO mapreduce.Job:  map 0% reduce 0%

16/11/27 22:53:45 INFO mapreduce.Job:  map 100% reduce 0%

16/11/27 22:54:13 INFO mapreduce.Job:  map 100% reduce 100%

16/11/27 22:54:15 INFO mapreduce.Job: Job job_1480267251741_0001 completed 
successfully

16/11/27 22:54:16 INFO mapreduce.Job: Counters: 49

          File System Counters

                    FILE: Number of bytes read=124

                    FILE: Number of bytes written=237911

                    FILE: Number of read operations=0

                    FILE: Number of large read operations=0

                    FILE: Number of write operations=0

                    HDFS: Number of bytes read=150

                    HDFS: Number of bytes written=66

                    HDFS: Number of read operations=6

                    HDFS: Number of large read operations=0

                    HDFS: Number of write operations=2

          Job Counters

                    Launched map tasks=1

                    Launched reduce tasks=1

                    Data-local map tasks=1

                    Total time spent by all maps in occupied slots (ms)=21062

                    Total time spent by all reduces in occupied slots (ms)=25271

                    Total time spent by all map tasks (ms)=21062

                    Total time spent by all reduce tasks (ms)=25271

                    Total vcore-milliseconds taken by all map tasks=21062

                    Total vcore-milliseconds taken by all reduce tasks=25271

                    Total megabyte-milliseconds taken by all map tasks=21567488

                    Total megabyte-milliseconds taken by all reduce tasks=25877504

          Map-Reduce Framework

                    Map input records=2

                    Map output records=10

                    Map output bytes=98

                    Map output materialized bytes=124

                    Input split bytes=92

                    Combine input records=0

                    Combine output records=0

                    Reduce input groups=8

                    Reduce shuffle bytes=124

                    Reduce input records=10

                    Reduce output records=8

                    Spilled Records=20

                    Shuffled Maps =1

                    Failed Shuffles=0

                    Merged Map outputs=1

                    GC time elapsed (ms)=564

                    CPU time spent (ms)=4300

                    Physical memory (bytes) snapshot=330784768

                    Virtual memory (bytes) snapshot=3804205056

                    Total committed heap usage (bytes)=211812352

          Shuffle Errors

                    BAD_ID=0

                    CONNECTION=0

                    IO_ERROR=0

                    WRONG_LENGTH=0

                    WRONG_MAP=0

                    WRONG_REDUCE=0

          File Input Format Counters

                    Bytes Read=58

          File Output Format Counters

                    Bytes Written=66

hadoop@hadoop-VirtualBox:~$

Nachdem das Programm erfolgreich ausgeführt wurde, gehen Sie zu HDFS und überprüfen Sie die Teildatei im Ausgabeverzeichnis.

Unten ist die Ausgabe des Wordcount-Programms.

hadoop@hadoop-VirtualBox:~$ hdfs dfs -cat /output/part-r-00000

 This    2
 first     1
 is        2
 mapreduce   1
 my      1
 program        1
 test     1
 wordcount     1
 hadoop@hadoop-VirtualBox:~$

Schlussfolgerung

Dieses Beispiel hier ist in Java, Sie können ein MapReduce-Programm auch in Python schreiben. Wir haben erfolgreich ein Hadoop MapReduce-Programm auf einem Hadoop-Cluster unter Ubuntu 16.04 ausgeführt. Die Schritte zum Ausführen eines Mapreduce-Programms in anderen Linux-Umgebungen bleiben gleich. Stellen Sie vor dem Ausführen des Programms sicher, dass Ihr Hadoop-Cluster betriebsbereit ist und Ihre Eingabedatei in HDFS vorhanden ist.


Ubuntu
  1. So ändern Sie den Hostnamen unter Ubuntu 18.04

  2. So fügen Sie eine Auslagerungsdatei unter Ubuntu hinzu

  3. Wie man ein C-Programm in Ubuntu kompiliert und ausführt

  4. Wie installiere ich ein Gui-Programm auf Ubuntu Server?

  5. So installieren Sie g ++ unter Ubuntu

So installieren Sie CouchPotato auf Ubuntu

So führen Sie .bin- und .run-Dateien in Ubuntu aus

So benennen Sie Dateien in Ubuntu 20.04 um

So führen Sie Java-Programme in Ubuntu aus

So installieren Sie Monitorix unter Ubuntu 16.04

So führen Sie Memtest in Ubuntu 22.04 aus