Wiederverwendung JVM in Hadoop mapreduce jobs
Ich weiß, wir können, setzen Sie die Eigenschaft "mapred.job.wiederverwenden.jvm.num.Aufgaben" neu-JVM verwenden. Meine Fragen sind:
(1), wie Sie entscheiden, die Anzahl der Aufgaben, die hier eingestellt werden, -1 oder einen anderen positiven ganzen zahlen?
(2) ist es eine gute Idee, bereits Wiederverwendung von JVMs und legen Sie diese Eigenschaft auf den Wert -1 in mapreduce-jobs?
Vielen Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie sehr kleine Aufgaben, die definitiv laufen nach einander, ist es nützlich zu setzen Sie diese Eigenschaft auf -1 (also einen gestarteten JVM wiederverwendet wird, unbegrenzte Zeit).
So kann man einfach spawn (Anzahl der task im cluster zur Verfügung, um Ihren job)-JVMs statt (Anzahl der Aufgaben)-JVMs.
Dies ist eine enorme performance-Verbesserung. In lange Laufenden jobs der Anteil der die Laufzeit im Vergleich zu setup eine neue JVM ist sehr gering, so dass es nicht geben Ihnen einen enormen performance-Schub.
Auch in lang andauernden Aufgaben ist es gut, neu die Aufgabe, aufgrund von Problemen wie der heap-Fragmentierung erniedrigende Ihre Leistung.
In addition, wenn Sie haben einige mid-time-Aufträge, die ausgeführt werden, Sie wiederverwenden konnte nur 2-3 Aufgaben, die mit einem guten trade-off.
JVM wiederverwenden(nur möglich in MR1) sollte helfen, mit der Leistung, weil es entfernt die startup lag der JVM, aber es ist nur marginal und kommt mit einer Reihe von Nachteilen mit sich bringt(Lesen Sie Seite-Effekte. Die meisten Aufgaben ausgeführt werden, für eine lange Zeit (mehrere Sekunden oder sogar Minuten) und Start Zeiten sind nicht das problem, wenn man sich an diese Aufgabe ausführen mal. Sie möchte eine neue Aufgabe auf einem sauberen Schiefer. Wenn Sie re-use-eine JVM gibt es eine chance, dass der Haufen nicht ganz sauber(es ist zersplittert, aus den vorherigen Läufen). Die Fragmentierung kann dazu führen, mehr GC ' s und zunichte machen alle start-up-Zeit erhält. Wenn es ein memory leak, könnte es auch Auswirkungen auf die Speichernutzung etc. So ist es besser, zu beginnen, eine neue JVM für die Aufgaben(wenn die Aufgaben nicht allzu groß). In MR2(GARN) - neue JVM ist immer begann für die Aufgaben. Für Uber - Aufgaben-es wird die Aufgabe ausgeführt, die in der lokalen JVM, nur.