Zrozumieć Spark: Menedżera klastrów, węzłów Master I Driver
Po przeczytaniu tego Pytania, chciałbym zadać dodatkowe pytania:
- Menedżer klastra jest usługą długo działającą, na którym węźle jest uruchomiony?
- czy to możliwe, że węzły Master I Driver będą tą samą maszyną? Zakładam, że gdzieś powinna istnieć zasada mówiąca, że te dwa węzły powinny być różne?
- W przypadku awarii węzła Sterownika, kto jest odpowiedzialny za ponowne uruchomienie aplikacji? i co będzie dokładnie? czyli w jaki sposób węzły Master, Cluster Manager i Workers będą zaangażowane (jeśli tak się stanie) i w jakiej kolejności?
- podobnie jak poprzednie pytanie: w przypadku awarii węzła głównego, co dokładnie się stanie i kto jest odpowiedzialny za odzyskanie po awarii?
2 answers
1. Menedżer klastra jest usługą długo działającą, na którym węźle jest uruchomiony?
Cluster Manager jest głównym procesem w trybie samodzielnym Spark. Można go uruchomić w dowolnym miejscu, wykonując ./sbin/start-master.sh
, w YARNIE byłby to Menedżer zasobów.
2. Czy to możliwe, że węzły Master I Driver będą tą samą maszyną? Przypuszczam, że gdzieś powinna istnieć reguła stwierdzająca, że te dwa węzły powinny być inaczej?
Master
jest na klaster, a {[2] } jest na aplikację. W przypadku klastrów samodzielnych/yarn Spark obsługuje obecnie dwa tryby wdrażania.
- w trybie klienta Sterownik jest uruchamiany w tym samym procesie co klient, który przesyła aplikację .
- w trybie klastra , jednak dla samodzielny sterownik jest uruchamiany z jednego z Workerów & dla yarn , jest uruchamiany wewnątrz master aplikacji node i proces klienta kończy się, gdy tylko spełni swoją odpowiedzialność za przesłanie aplikacji bez czekania na zakończenie aplikacji.
Jeśli aplikacja złożona z {[3] } w głównym węźle, zarówno Master I Driver będą na tym samym węźle . sprawdź rozmieszczenie aplikacji Spark na przodzie
3. W przypadku awarii węzła Sterownika, kto jest odpowiedzialny za ponowne uruchomienie aplikacji? A co dokładnie się stanie? tj. w jaki sposób węzły Master, Cluster Manager i Workers będą zaangażowane (jeśli tak się stanie) i w jakiej kolejności?
Jeśli sterownik zawiedzie, Wszystkie zadania executors zostaną zabite dla tej przesłanej/wyzwalanej aplikacji spark.
4. W przypadku awarii węzła głównego, co dokładnie się stanie i kto jest odpowiedzialny za odzyskanie po awarii?
Błędy węzłów głównych są obsługiwane na dwa sposoby.
-
Standby Mistrzowie z ZooKeeper:
/ Align = "left"/, możesz uruchomić wiele wzorców w klastrze podłączonych do tego samego / Align = "left" / Jeden zostanie wybrany "liderem", a inni pozostać w trybie gotowości. Jeśli obecny przywódca umrze, inny Mistrz zostanie wybrany, odzyska stan starego mistrza, a następnie wznowi planowanie. Cały proces odzyskiwania (od momentu pierwszego lider upada) powinien wziąć od 1 do 2 minut. Zauważ, że to opóźnienie dotyczy tylko planowania nowych aplikacji – aplikacji, które były już uruchomione podczas Master failover nie ma to wpływu. sprawdź tutaj dla konfiguracji
-
Odzyskiwanie pojedynczego węzła z lokalnym systemem plików:
ZooKeeper to najlepszy sposób na osiągnięcie wysokiego poziomu produkcji dostępność, ale jeśli chcesz być w stanie ponownie uruchomić Master, jeśli to się skończy, tryb systemu plików może się tym zająć. Gdy aplikacje i pracownicy rejestrują, mają wystarczająco dużo Państwa napisane do podanego katalog, dzięki czemu można je odzyskać po ponownym uruchomieniu głównego proces. sprawdź tutaj dla conf i więcej szczegółów
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
2019-08-27 18:16:42
Menedżer klastra jest usługą długo działającą, na którym węźle jest uruchomiony?
Menedżer klastrów to tylko Menedżer zasobów, tj. procesorów i pamięci RAM, których SchedulerBackends używa do uruchamiania zadań. Menedżer klastrów nie robi nic więcej Apache Spark, ale oferuje zasoby, a po uruchomieniu Spark executors bezpośrednio komunikują się ze sterownikiem w celu uruchamiania zadań.
Możesz uruchomić samodzielny serwer główny wykonując:
./sbin/start-master.sh
Można uruchomić gdziekolwiek.
Aby uruchomić aplikację na klastrze Spark
./bin/spark-shell --master spark://IP:PORT
Czy to możliwe, że węzły Master I Driver będą tą samą maszyną? Zakładam, że gdzieś powinna istnieć zasada mówiąca, że te dwa węzły powinny być różne?
W trybie autonomicznym, po uruchomieniu komputera, uruchomiony zostanie JVM.Twój Spark Master uruchomi się i na każdej maszynie uruchomi się JVM i zarejestruje się w Spark Master. Oba są Menedżer zasobów.Po uruchomieniu aplikacji lub przesłaniu aplikacji w trybie klastra sterownik uruchomi się wszędzie tam, gdzie wykonasz ssh, aby uruchomić tę aplikację. Sterownik JVM skontaktuje się z mistrzem SparK dla executorów (Ex) i w trybie samodzielnym Worker uruchomi Ex. Tak więc Spark Master jest na klaster, A sterownik JVM na aplikację.
W przypadku awarii węzła Sterownika, kto jest odpowiedzialny za ponowne uruchomienie aplikacji? a co dokładnie się stanie? czyli jak mistrz węzły node, Cluster Manager i Workers będą zaangażowane (jeśli tak się stanie) i w jakiej kolejności?
Jeśli Ex JVM ulegnie awarii, Worker JVM uruchomi Ex, A gdy Worker JVM ill ulegnie awarii, Spark Master uruchomi je. W przypadku samodzielnego klastra Spark z trybem wdrażania klastra można również określić --Supervisor, Aby upewnić się, że sterownik zostanie automatycznie uruchomiony ponownie, jeśli nie powiedzie się z niezerowym kodem wyjścia.Spark Master uruchomi sterownik JVM
Podobnie jak w poprzednie pytanie: w przypadku awarii węzła głównego, co dokładnie się stanie i kto jest odpowiedzialny za odzyskanie po awarii?
Niepowodzenie na master spowoduje, że executorzy nie będą w stanie się z nim komunikować. Więc przestaną pracować. Niepowodzenie master spowoduje, że kierowca nie będzie mógł się z nim komunikować w celu uzyskania statusu zadania. Więc Twoja aplikacja nie powiedzie się. Utrata Master zostanie potwierdzona przez uruchomione aplikacje, ale w przeciwnym razie powinny one nadal działać mniej więcej tak, jak nic się nie stało z dwoma ważnymi wyjątkami:
1.aplikacja nie będzie w stanie zakończyć się w elegancki sposób.
2.jeśli Spark Master jest wyłączony, Worker spróbuje ponownie zarejestrować się z mistrzem. Jeśli to się nie powiedzie, pracownicy po prostu się poddadzą.
ReregisterWithMaster () -- ponownie zarejestrować się u aktywnego mistrza, z którym pracownik komunikuje się. Jeśli nie ma żadnego, oznacza to, że ten worker nadal uruchamia bootstrapping i nie nawiązał jeszcze połączenia z master, w takim przypadku powinniśmy ponownie zarejestrować się u wszystkich mistrzów. Ważne jest, aby ponownie zarejestrować się tylko z aktywnym mistrzem podczas awarii.pracownik bezwarunkowo próbuje ponownie zarejestrować się u wszystkich mistrzów, może pojawić się stan rasy.Błąd szczegółowy w SPARK-4592:
W tej chwili długo działające aplikacje nie będą mogły kontynuować przetwarzania, ale nadal nie powinno to skutkować natychmiastową awarią. Zamiast tego aplikacja będzie czekać na mistrza, aby wrócić on-line (odzyskiwanie systemu plików) lub kontakt od nowego lidera (Tryb Zookeeper), a jeśli tak się stanie, będzie kontynuował przetwarzanie.
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
2016-11-15 10:30:33