Przeczytałem Omówienie trybu klastrowego i nadal nie rozumiem różnych procesów w klastrze autonomicznym Spark i równoległości.
Czy pracownik jest procesem JVM, czy nie? Uruchomiłem bin\start-slave.sh
i okazało się, że spawnował on robot, którym w rzeczywistości jest JVM.
Zgodnie z powyższym linkiem, executor jest procesem uruchomionym dla aplikacji w węźle pracownika, który uruchamia zadania. Wykonawca jest również maszyną JVM.
Oto moje pytania:
Wykonawcy są na aplikację. Jaka jest zatem rola pracownika? Czy koordynuje to z executorem i przekazuje wynik z powrotem do sterownika? Czy kierowca rozmawia bezpośrednio z wykonawcą? Jeśli tak, to jaki jest cel pracownika?
Jak kontrolować liczbę wykonawców aplikacji?
Czy zadania mogą być uruchamiane równolegle w executorze? Jeśli tak, jak skonfigurować liczbę wątków dla modułu wykonującego?
Jaka jest relacja między pracownikiem, wykonawcami i rdzeniami executorów (--total-executor-core)?
Co to znaczy mieć więcej pracowników na węzeł?
Zaktualizowano
Weźmy przykłady, aby lepiej zrozumieć.
Przykład 1: Autonomiczny klaster z 5 węzłami roboczymi (każdy węzeł ma 8 rdzeni) Gdy uruchamiam aplikację z ustawieniami domyślnymi.
Przykład 2 Taka sama konfiguracja klastra jak w przykładzie 1, ale uruchamiam aplikację z następującymi ustawieniami - core-executor 10 - total-executor-core 10.
Przykład 3 Taka sama konfiguracja klastra jak w przykładzie 1, ale uruchamiam aplikację z następującymi ustawieniami - core-executor 10 - total-executor-core 50.
Przykład 4 Taka sama konfiguracja klastra jak w przykładzie 1, ale uruchamiam aplikację z następującymi ustawieniami - core-executor 50 - total-executor-core 50.
Przykład 5 Taka sama konfiguracja klastra jak w przykładzie 1, ale uruchamiam aplikację z następującymi ustawieniami - core-executor 50 - total-executor-core 10.
W każdym z tych przykładów, ilu wykonawców? Ile wątków na executora? Ile rdzeni? Jak decyduje liczba wykonawców na aplikację? Czy zawsze jest taka sama jak liczba pracowników?