MapReduce Job zeigt meine Druckanweisungen nicht auf dem Terminal an

8

Ich versuche gerade herauszufinden, wann Sie einen MapReduce-Job ausführen, indem Sie an bestimmten Stellen des Codes einige system.out.println () -Modelle erstellen, aber wissen, dass diese print-Anweisung auf meinem Terminal gedruckt wird, wenn der Job ausgeführt wird . Kann mir jemand helfen herauszufinden, was genau mache ich hier falsch?

%Vor%     
asembereng 11.07.2011, 03:09
quelle

2 Antworten

20

Das hängt davon ab, wie Sie Ihren Job einreichen. Ich denke, Sie reichen ihn mit bin/hadoop jar yourJar.jar right?

ein

Ihr System.out.println() ist nur in Ihrer Hauptmethode verfügbar, da der Mapper / Reducer innerhalb von hadoop in einer anderen JVM ausgeführt wird, werden alle Ausgaben in spezielle Protokolldateien (out / log-Dateien) umgeleitet. Und ich würde empfehlen, Ihr eigenes Apache-Commons-Protokoll zu verwenden:

%Vor%

Und deshalb einige Info-Logging:

%Vor%

Wenn Sie sich im "lokalen" Modus befinden, können Sie dieses Protokoll in Ihrer Shell sehen, andernfalls wird dieses Protokoll irgendwo auf dem Rechner gespeichert, auf dem die Aufgabe ausgeführt wird. Bitte benutzen Sie die Web-UI von Jobtracker, um diese Log-Dateien zu betrachten, das ist sehr praktisch. Standardmäßig läuft der Job-Tracker auf Port 50030.

    
Thomas Jungblut 11.07.2011, 05:41
quelle
1

Alternativ können Sie die MultipleOutputs-Klasse verwenden und alle Ihre Protokolldaten in eine Ausgabedatei (Protokoll) umleiten.

%Vor%     
Satya Pavan 18.04.2015 14:50
quelle

Tags und Links