2010-07-08 3 views

Antwort

53

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

+0

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. –

+0

JobTracker existiert nicht in Hadoop 2 –

21

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.

8

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); 
    } 
} 
12

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.

+3

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 ' –

Verwandte Themen