Załóżmy, że w każdym momencie działa tylko jedno zadanie Spark.
Co mam do tej pory
Oto, co rozumiem, co dzieje się w Spark:
- Po
SparkContext
utworzeniu węzła roboczego każdy węzeł roboczy uruchamia moduł wykonawczy. Executory to oddzielne procesy (JVM), które łączą się z powrotem z programem sterownika. Każdy executor ma słoik z programem sterownika. Zamknięcie sterownika powoduje wyłączenie wykonawców. Każdy executor może posiadać kilka partycji. - Po wykonaniu zadania tworzony jest plan wykonania zgodnie z wykresem rodowodowym.
- Zadanie wykonania jest podzielone na etapy, w których etapy zawierają tyle samo sąsiednich (na wykresie rodowodowym) transformacji i akcji, ale bez tasowań. Tak więc etapy są oddzielone tasowaniem.
Rozumiem, że
- Zadanie to polecenie wysyłane ze sterownika do modułu wykonawczego przez serializację obiektu Function.
- Wykonawca deserializuje (za pomocą pliku jar sterownika) polecenie (zadanie) i wykonuje je na partycji.
ale
Pytania)
Jak podzielić etap na te zadania?
Konkretnie:
- Czy zadania są zdeterminowane przez transformacje i działania, czy też może to być wiele przekształceń / działań w zadaniu?
- Czy zadania są określane przez partycję (np. Jedno zadanie na etap na partycję).
- Czy zadania są określane przez węzły (np. Jedno zadanie na etap na węzeł)?
Co myślę (tylko częściowa odpowiedź, nawet jeśli słuszna)
W https://0x0fff.com/spark-architecture-shuffle tasowanie jest wyjaśnione za pomocą obrazu
i mam wrażenie, że taka jest zasada
każdy etap jest podzielony na # zadania związane z liczbą partycji, bez względu na liczbę węzłów
W przypadku mojego pierwszego obrazu powiedziałbym, że mam 3 zadania mapy i 3 zadania redukcji.
W przypadku obrazu z 0x0fff powiedziałbym, że jest 8 zadań mapy i 3 zadania redukcji (zakładając, że są tylko trzy pomarańczowe i trzy ciemnozielone pliki).
W każdym razie pytania otwarte
Czy to jest poprawne? Ale nawet jeśli to prawda, nie na wszystkie moje pytania powyżej udzielono odpowiedzi, ponieważ nadal pozostaje otwarte, czy wiele operacji (np. Wiele map) znajduje się w ramach jednego zadania, czy też są one podzielone na jedno zadanie na operację.
Co mówią inni
Co to jest zadanie w Spark? W jaki sposób pracownik Spark wykonuje plik jar? i jak program planujący Apache Spark dzieli pliki na zadania? są podobne, ale nie czułem, że na moje pytanie udzielono jasnej odpowiedzi.