Was bedeutet CPU-Zeit für einen Hadoop-Job bedeuten?
Ich fürchte, ich verstehe nicht, das timing Ergebnisse eines Map-reduce-job. Zum Beispiel, ein job, den ich verwende gibt mir folgende Ergebnisse aus der job-tracker.
Fertig in: 1mins, 39sec
CPU-Zeit ausgegeben (ms) 150,460 152,030 302,490
Den Einträgen in der CPU-Zeitaufwand (ms) sind für Map, Reduce und Insgesamt jeweils. Aber dann ist, wie "CPU-Zeit verbraucht", die gemessen wird, und was hat es zu bedeuten? Ist das die gesamte Zeit in jeder der Mapper und Reduzierstücke zugeordnet, die für den job? Ist es möglich, zu Messen, zu anderen Zeiten aus dem Rahmen wie Zeit für mischen, Sortieren, partitionieren etc? Wenn ja, wie?
Eine zweite Frage die mich stört. Ich habe einige Beiträge hier ( Link1 , Link2 ), die empfehlen die Verwendung von getTime() in der Treiber-Klasse :
long start = new Date().getTime();
boolean status = job.waitForCompletion(true);
long end = new Date().getTime();
System.out.println("Job took "+(end-start) + "milliseconds");
Ist dies nicht zu tun, was der erste Eintrag in Job-Tracker-Ausgabe bietet überhaupt? Ist das notwendig? Was ist der beste Weg, um Zeit einen hadoop-job-vor allem, wenn ich wollen mal IO-Zeit, Rechenzeit pro Knoten/pro Stufe ?
- Sie sollten verschiedene Fragen in verschiedenen posts
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der map-phase besteht aus: - Datensatz-Leser, anzeigen, combiner, und Partitionierer.
Reduzieren phase besteht aus: mische, Sortieren, reduzieren, Ausgabe.
CPU-Zeit, die Sie dort sehen, ist der gesamte map-phase und der gesamten phase reduzieren... nicht nur die Funktion selbst. Dies ist eine Art der verwirrende Terminologie, weil Sie die map-Funktion und senken Funktion, die nur einen Teil der Karte phase und reduzieren phase. Dies ist die Gesamt-CPU-Zeit auf allen Knoten im cluster.
CPU-Zeit ist äußerst unterschiedlichen form in Echtzeit. CPU-Zeit ist, wie viel Zeit mit etwas verbracht, auf die CPUs, während die Reale Zeit ist das, was Sie und ich als Menschen hier erfahren. Denken Sie über diese: angenommen, Sie haben den gleichen job läuft über die gleichen Daten, aber auf eine 20-Knoten-cluster, dann ein 200-Knoten-cluster. Insgesamt die gleiche Menge an CPU-Zeit auf beiden Clustern, aber die 200 Knoten-cluster ausgeführt wird 10x schneller-in Echtzeit. CPU-Zeit ist eine nützliche Metrik, wenn Sie ein gemeinsames system mit vielen jobs läuft es bei der gleichen Zeit.
Ich weiß nicht, wie würden Sie tiefer gehen, um die CPU-Zeit in jeder phase. Mit einem Datum-timer ist wohl nicht was du suchst aber.