ponowne użycie JVM w Hadoop mapreduce jobs

Wiem, że możemy ustawić właściwość " mapred.praca.ponowne użycie.jvm.num.zadania " ponowne wykorzystanie JVM. Moje pytania to:

(1) Jak określić liczbę zadań, które mają być tu ustawione, -1 czy jakieś inne dodatnie liczby całkowite?

(2) czy dobrym pomysłem jest ponowne użycie JVMs i ustawienie tej właściwości na wartość -1 w zadaniach mapreduce?

Dziękuję bardzo!

Author: RecSys_2010, 2012-05-07

2 answers

Jeśli masz bardzo małe zadania, które zdecydowanie działają po sobie, warto ustawić tę właściwość na -1 (co oznacza, że wywołany JVM będzie ponownie użyty nieograniczoną ilość razy). Więc po prostu spawn (liczba zadań w klastrze dostępne do zadania)-JVMs zamiast (liczba zadań) - JVMs.

To ogromna poprawa wydajności. W długotrwałych zadaniach odsetek czasu wykonania w porównaniu do konfiguracji nowego JVM jest bardzo niski, więc nie daje to ogromnej wydajności boost.

Również w długich zadaniach dobrze jest odtworzyć proces zadania, z powodu problemów takich jak fragmentacja sterty pogarszająca wydajność.

Ponadto, jeśli masz jakieś zadania w średnim czasie, możesz ponownie użyć tylko 2-3 zadań, mając dobry kompromis.

 20
Author: Thomas Jungblut,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-07 17:22:30

Ponowne użycie JVM (możliwe tylko w MR1) powinno pomóc w wydajności, ponieważ usuwa opóźnienie uruchamiania JVM, ale jest tylko marginalne i ma wiele wad (Czytaj efekty uboczne. Większość zadań będzie działać przez długi czas (dziesiątki sekund lub nawet minuty), a czasy uruchamiania nie stanowią problemu, jeśli spojrzysz na te czasy uruchamiania zadań. Chciałbyś rozpocząć nowe zadanie na czystych kontach. Przy ponownym użyciu JVM istnieje szansa, że sterta nie jest całkowicie czysta(jest fragmentowana z poprzednie biegi). Fragmentacja może prowadzić do większej liczby GC i unieważnić wszystkie zyski czasu rozruchu. Jeśli wystąpi wyciek pamięci, może to również wpłynąć na zużycie pamięci itp. Więc lepiej jest uruchomić nowy JVM Dla zadań(jeśli zadania nie są dość małe). W MR2 (YARN) - nowy JVM jest zawsze uruchamiany Dla zadań. Dla zadań Uber-będzie uruchamiać zadanie tylko w lokalnym JVM.

 1
Author: Ashu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-13 20:07:12