przegląd trybu klastra

ten dokument zawiera krótkI przegląd działania programu Spark na klastrach, aby ułatwić zrozumienie zaangażowanych komponentów. Przeczytaj przewodnik składania aplikacjiaby dowiedzieć się o uruchamianiu aplikacji w klastrze.

aplikacje Spark działają jako niezależne zestawy procesów w klastrze, koordynowane przez obiekt SparkContextw głównym programie (zwanym programem sterowników).

w szczególności, aby uruchomić na klastrze, SparkContext może łączyć się z kilkoma typami menedżerów klastrów (albo z niezależnym menedżerem klastrów Spark, Mesos lub YARN), które przydzielają zasoby do różnych aplikacji. Po podłączeniu Spark nabywa wykonawców na węzłach w klastrze, które sąprocesami, które uruchamiają obliczenia i przechowują dane dla Twojej aplikacji.Następnie wysyła kod aplikacji (zdefiniowany przez pliki JAR lub Python przekazane do SparkContext) do wykonawców. Wreszcie, SparkContext wysyła zadania do wykonawców do uruchomienia.

jest kilka przydatnych rzeczy do zapamiętania na temat tej architektury:

  1. każda aplikacja otrzymuje własne procesy wykonujące, które pozostają na czas trwania całej aplikacji i uruchamiają zadania w wielu wątkach. Ma to zaletę izolowania aplikacji od siebie, zarówno po stronie planowania (każdy sterownik planuje własne zadania), jak i po stronie wykonującej (zadania z różnych aplikacji uruchamiane w różnych JVMs). Oznacza to jednak również, że dane nie mogą być współdzielone między różnymi aplikacjami Spark (instancjami SparkContext) bez zapisania ich do zewnętrznego systemu pamięci masowej.
  2. Spark jest agnostykiem dla menedżera klastrów bazowych. Tak długo, jak może nabywać procesy Executor, a te komunikują się ze sobą, stosunkowo łatwo jest go uruchomić nawet na Cluster managerze, który obsługuje również inne aplikacje (np. Mesos/YARN).
  3. program sterownika musi nasłuchiwać i akceptować połączenia przychodzące od swoich wykonawców przez cały okres użytkowania (np. patrz spark.kierowca.port w konfiguracji sieci). W związku z tym program sterownika musi być sieciowyadresowalny z węzłów roboczych.
  4. ponieważ sterownik planuje zadania w klastrze, powinien być uruchamiany blisko workernodes, najlepiej w tej samej sieci lokalnej. Jeśli chcesz wysyłać żądania do clustera zdalnie, lepiej otworzyć sterownik RPC dla sterownika i zlecić mu przesyłanie operacji z pobliskiego miejsca, niż uruchomić sterownik z dala od węzłów roboczych.

typy menedżerów klastrów

system obsługuje obecnie kilka menedżerów klastrów:

  • Standalone – prosty menedżer klastrów dołączony do programu Spark, który ułatwia konfigurowanie klastra.
  • Apache Mesos-ogólny menedżer klastrów, który może również uruchamiać Hadoop MapReduce i aplikacje usługowe.
  • Hadoop – Menedżer zasobów w Hadoop 2.
  • Kubernetes-system open-source do automatyzacji wdrażania,skalowania i zarządzania aplikacjami kontenerowymi.

istnieje projekt innej firmy (nieobsługiwany przez projekt Spark), aby dodać obsługę forNomad jako menedżera klastrów.

składanie wniosków

wnioski można składać do klastra dowolnego typu za pomocą skryptu spark-submit.Przewodnik składania wniosków opisuje, jak to zrobić.

monitorowanie

każdy sterownik ma interfejs WWW, zazwyczaj na porcie 4040, który wyświetla informacje o runningtasks, executorach i użyciu pamięci masowej. Po prostu przejdź do w przeglądarce, aby uzyskać dostęp do tego interfejsu użytkownika. W przewodniku dotyczącym monitorowania opisano również inne opcje monitorowania.

planowanie zadań

Spark daje kontrolę nad alokacją zasobów zarówno w aplikacjach (na poziomie clustermanagera), jak i wewnątrz aplikacji (jeśli na tym samym SparkContext odbywa się wiele obliczeń).Omówienie harmonogramu zadań opisuje to bardziej szczegółowo.

Słowniczek

poniższa tabela podsumowuje terminy używane w odniesieniu do pojęć klastrowych:

termin Znaczenie
aplikacja program użytkownika zbudowany na bazie Spark. Składa się z programu sterownika i executorów w klastrze.
Jar aplikacji jar zawierający aplikację Spark użytkownika. W niektórych przypadkach użytkownicy będą chcieli utworzyć „jar uber” zawierający ich aplikację wraz z jej zależnościami. Jar użytkownika nigdy nie powinien zawierać bibliotek Hadoop ani Spark, jednak zostaną one dodane w czasie wykonywania.
Driver program proces uruchamiający funkcję main () aplikacji i tworzący SparkContext
Menedżer klastra zewnętrzna usługa pozyskiwania zasobów na klastrze (np. samodzielny menedżer, Mesos, YARN)
tryb wdrażania rozróżnia, gdzie działa proces sterownika. W trybie” klastra ” framework uruchamia sterownik wewnątrz klastra. W trybie” klient ” zgłaszający uruchamia sterownik poza klastrem.
węzeł roboczy każdy węzeł, który może uruchamiać kod aplikacji w klastrze
Executor proces uruchamiany dla aplikacji na węźle roboczym, który uruchamia zadania i przechowuje dane w pamięci lub na dysku. Każda aplikacja ma swoich wykonawców.
zadanie jednostka pracy, która zostanie wysłana do jednego wykonawcy
zadanie równoległe obliczenia składające się z wielu zadań, które powstają w odpowiedzi na działanie iskry (np. save, collect); zobaczysz ten termin używany w dziennikach kierowców.
etap każde zadanie jest podzielone na mniejsze zestawy zadań zwane etapami, które zależą od siebie nawzajem( podobnie jak mapa i redukcja etapów w MapReduce); zobaczysz ten termin używany w dziennikach sterowników.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Previous post tak, pobieranie ROM Nintendo jest nielegalne (nawet jeśli posiadasz grę)
Next post Jak prowadzić rozmowy seksualne z Kobietami