Ich möchte ein Mapreduce-Skript zu debuggen, und ohne zu viel Mühe versucht, einige Druckanweisungen in meinem Programm zu setzen. Aber ich kann sie in keinem der Protokolle finden.Woher sendet das hadoop mapreduce-Framework meine System.out.print() - Anweisungen? (stdout)
Antwort
Eigentlich stdout zeigt nur die System.out.println()
der nicht-Karte zu reduzieren Klassen.
Die System.out.println()
für Map- und Reduce-Phasen können in den Protokollen angezeigt werden. Einfacher Zugang zu den Protokollen ist
http://localhost:50030/jobtracker.jsp-> klicken Sie auf den abgeschlossenen Job-> klicken Sie auf Karte oder reduzieren Sie Aufgabe-> klicken Sie auf TaskNumber-> Task-Logs-> stdout Protokolle.
hoffe, das hilft
Eine andere Möglichkeit, durch das Terminal ist:
1) Gehen Sie in Ihr Hadoop_Installtion Verzeichnis, dann in "logs/userlogs".
2) Öffnen Sie das Verzeichnis job_id.
3) überprüfen Verzeichnisse mit _ m_, wenn Sie den Mapper-Ausgang oder _R_ wenn Sie suchen Reduzierungen wollen.
Beispiel: In Hadoop-20.2.0:
> ls ~/hadoop-0.20.2/logs/userlogs/attempt_201209031127_0002_m_000000_0/ log.index stderr stdout syslog
Die obigen Mittel:
Hadoop_Installation: ~/Hadoop-0.20.2
job_id: job_201209031127_0002
_m_: map Aufgabe " Landkartennummer ": _000000_
4) offen stdout wenn Sie "system.out.println" oder stderr verwendet haben, wenn Sie "system.err.append" verwendet haben.
PS. andere Hadoop-Versionen können eine andere Hierarchie haben, aber sie sollten alle unter $ Hadoop_Installtion/logs/userlogs sein.
Um Ihre stdout und Protokollnachricht auf der Konsole zu erhalten, können Sie Apache Commons Logging Framework in Ihrem Mapper und Reducer verwenden.
public class MyMapper extends Mapper<..,...,..,...> {
public static final Log log = LogFactory.getLog(MyMapper.class)
public void map() throws Exception{
// Log to stdout file
System.out.println("Map key "+ key);
//log to the syslog file
log.info("Map key "+ key);
if(log.isDebugEanbled()){
log.debug("Map key "+ key);
}
context.write(key,value);
}
}
Auf einem Hadoop-Cluster mit yarn
Sie die Protokolle holen können, einschließlich stdout, mit:
yarn logs -applicationId application_1383601692319_0008
Aus irgendeinem Grund habe ich festgestellt dies als mehr vollständig zu sein, was ich sehe in das Webinterface. Das Webinterface hat die Ausgabe von System.out.println()
für mich nicht aufgelistet.
Danke für die Antwort auf hadoop2. Können Sie mir sagen, warum ich diesen Fehler nach der Ausführung dieses Befehls bekomme? 'Protokolle nicht verfügbar unter/tmp/logs/hadoopuser/logs/application_1441282624447_3854' und' Log Aggregation wurde nicht abgeschlossen oder ist nicht aktiviert ' –
- 1. Python: logging.streamhandler sendet keine Protokolle an stdout
- 2. Debugging meine if-Anweisungen
- 3. Woher kennt Chrome meine Geolokalisierung?
- 4. System.out.print funktioniert nicht
- 5. Beendete Programm (Flask) sendet weiterhin Ausgabe an STDOUT?
- 6. Regulärer Ausdruck zu finden System.out.print
- 7. Woher kommt das Wortmerkmal?
- 8. Woher kommt das Speicherleck?
- 9. System.out.print, das korrektes Ergebnis produziert, aber HashMap durchläuft, ist nicht
- 10. Woher soll ich meine ServiceDefinition.csdef-Datei bekommen?
- 11. RxJS Observable.concat: Woher weiß man, woher das nächste Ergebnis kommt?
- 12. Warum sendet AT86RF231 meine Daten nicht?
- 13. Formularskript, das keine Daten sendet
- 14. Woher weiß Bash, wo meine Variablennamen enden?
- 15. Woher ist meine Stack-Spur verschwunden?
- 16. Meine Methode sendet HTML statt Excel-Datei
- 17. Woher bekomme ich das Zertifikat?
- 18. Ionen Toggle sendet das Formular
- 19. Debug mit System.out.print in einer Schleife (Eclipse)
- 20. wie Subprocess.Popen das gesamte stdout abrufen?
- 21. Woher weiß ich, ob meine App mit Robolectric läuft?
- 22. Ich möchte, dass meine Datenbank (SQL) Updates an die Clientanwendung sendet oder sendet
- 23. Woher bekomme ich das Dienstprogramm cabarc?
- 24. Windows Fehlerdialog - 'Fehler aufgetreten' - Woher kommt das?
- 25. Woher bekomme ich das NaturalDocs Maven Plugin?
- 26. Android: GoogleAuthUtil.getToken - Woher soll das Kontoobjekt kommen?
- 27. Woher bekomme ich das Admob-Glas?
- 28. über stdout/stderr Umleitungen
- 29. Warum sendet meine TB_INSERTBUTTON-Nachricht comctl32, um zu werfen?
- 30. Ajax sendet die Daten nicht an meine PHP-Datei
Derselbe Ansatz gilt auch für Oozie unter Hue.Oozie plant MR2-Kartenjobs, zeigt die Protokolle jedoch nicht ordnungsgemäß an. Um sie zu sehen, sollten Sie unter jobtracker.jsp gehen. –
JobTracker existiert nicht in Hadoop 2 –