2017-01-25 2 views
1

Nachdem ein Hadoop-Job erfolgreich ausgeführt wurde, wird eine Zusammenfassung der verschiedenen angezeigten Zähler angezeigt, siehe Beispiel unten. Meine Frage wäre, was in dem Zähler Total time spent by all map tasks enthalten ist, speziell in dem Fall, dass der Mapper-Job nicht node-lokal ist, ist die Datenkopierzeit enthalten oder nicht?Was bedeutet "Zeitaufwand für Map-Aufgabe" in Hadoop?

17/01/25 09:06:12 INFO mapreduce.Job: Counters: 49 
     File System Counters 
       FILE: Number of bytes read=2941 
       FILE: Number of bytes written=241959 
       FILE: Number of read operations=0 
       FILE: Number of large read operations=0 
       FILE: Number of write operations=0 
       HDFS: Number of bytes read=3251 
       HDFS: Number of bytes written=2051 
       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)=23168 
       Total time spent by all reduces in occupied slots (ms)=4957 
       Total time spent by all map tasks (ms)=5792 
       Total time spent by all reduce tasks (ms)=4957 
       Total vcore-milliseconds taken by all map tasks=5792 
       Total vcore-milliseconds taken by all reduce tasks=4957 
       Total megabyte-milliseconds taken by all map tasks=23724032 
       Total megabyte-milliseconds taken by all reduce tasks=5075968 
     Map-Reduce Framework 
       Map input records=9 
       Map output records=462 
       Map output bytes=4986 
       Map output materialized bytes=2941 
       Input split bytes=109 
       Combine input records=462 
       Combine output records=221 
       Reduce input groups=221 
       Reduce shuffle bytes=2941 
       Reduce input records=221 
       Reduce output records=221 
       Spilled Records=442 
       Shuffled Maps =1 
       Failed Shuffles=0 
       Merged Map outputs=1 
       GC time elapsed (ms)=84 
       CPU time spent (ms)=2090 
       Physical memory (bytes) snapshot=471179264 
       Virtual memory (bytes) snapshot=4508950528 
       Total committed heap usage (bytes)=326631424 
     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=3142 
     File Output Format Counters 
       Bytes Written=2051 

Antwort

1

Ich glaube, dass die Datenzeit kopieren in die Total time spent by all map tasks Metrik enthalten ist.

Vor allem, wenn Sie den Server-seitigen Code (meist im Zusammenhang Ressourcenmanagement) überprüfen, können Sie sehen, dass der MILLIS_MAPS Konstante (die die Metrik entspricht, die Sie sich beziehen), in der TaskAttempImpl Klasse aktualisiert, um die Dauer nimmt des Aufgabenversuchs. Taskstart launchTime wird gesetzt, wenn der Container gestartet wird und die Ausführung gestartet wird (und aufgrund meines Quellcodewissens scheint es, dass keine der Komponenten irgendwelche Daten an dieser Stelle bewegt, sondern nur geteilte Metadaten weitergegeben werden).

Nun, wenn Container gestartet wird der InputFormat ist eine InputStream Öffnung, die die Daten der Mapper Verarbeitung (an diesem Punkt beginnen muss erhalten verantwortlich ist haben Sie verschiedene Dateisysteme, die den Strom angeschlossen werden kann, aber einen Blick geben um DistributedFileSystem). Sie können die Schritte in den MapTask.runNewMapper(...) Verfahren durchgeführt überprüfen, wo Sie haben:

input.initialize(split, mapperContext); 
mapper.run(mapperContext); 

(Ich bin auf Hadoop 2.6)

+0

Dank für die ausführliche Antwort. – mcserep