2014-10-28 11 views
5

Rozumiem, że węzły robocze są odporne na awarie, ale co się stanie, jeśli program sterownika ulegnie awarii z jakiegoś nieoczekiwanego powodu? (problem z wyłączaniem/pamięcią itp.).Co się stanie, jeśli program sterownika się zawiesi?

Wyobrażam sobie, że stracisz całą pracę, ponieważ kod odczytujący wyniki już nie działa lub Spark w jakiś sposób wie, jak go zrestartować? Jeśli tak to jak?

+3

W zależności od tego, jak uruchamiasz swój sterownik. Np. Jeśli uruchomisz tryb skupienia przędzy, przędza spróbuje ponownie sterownika. Oznacza to jednak ponowne uruchomienie wszystkich zadań. – zsxwing

+0

Dzięki. Muszę więc zaprojektować go tak, aby sterownik zapisywał gdzieś postęp sub-obliczeń i aktualizował "etap" obliczeń w jakimś dzienniku, i radził sobie wewnętrznie z tolerancją błędu, chyba –

+0

prawą. Musisz odzyskać sterownik samodzielnie. – zsxwing

Odpowiedz

4

Jak wskazuje @zsxwing, zależy to od sposobu uruchomienia sterownika. Oprócz pracy w przędzy, możesz także uruchomić swoją pracę w trybie wdrażania klastra (jest to parametr do wysyłania iskier). W Spark Streaming określasz --supervise, a Spark uruchomi go ponownie. Szczegóły znajdują się w Spark Streaming Guide.

+0

Czy punkt kontrolny jest potrzebny podczas korzystania z --supervise? – okwap

2

Tak, można ponownie uruchamiać aplikacje iskier. Dostępnych jest kilka opcji specyficznych dla używanego menedżera klastra. Na przykład w przypadku samodzielnego klastra Spark z trybem wdrażania klastrów można również określić wartość --supervise, aby upewnić się, że sterownik zostanie automatycznie zrestartowany, jeśli zakończy się niepowodzeniem z niezerowym kodem zakończenia. Aby wyliczyć wszystkie te opcje dostępne iskra przesłać, uruchom go z --help:

Run w klastrze w trybie autonomicznym Spark deploy klastra z nadzorować

./bin/spark-submit \ 
    --class org.apache.spark.examples.SparkPi \ 
    --master spark://207.184.161.138:7077 \ 
    --deploy-mode cluster \ 
    --supervise \ 
    /path/to/examples.jar \ 
    1000 
0

Zgodnie Spark dokumentacja: -

Spark Standalone - sterownik aplikacji Spark może zostać przesłany do uruchomienia w ramach samodzielnego klastra Spark (zobacz tryb wdrażania klastrów), czyli sam sterownik aplikacji działa na jednym z węzłów roboczych. Ponadto samodzielny menedżer klastra może zostać poproszony o nadzorowanie sterownika i ponowne uruchomienie go, jeśli sterownik nie działa z powodu niezerowego kodu wyjścia lub z powodu awarii węzła, na którym działa sterownik. Zobacz tryb klastra i nadzoruj w niezależnym przewodniku Spark, aby uzyskać więcej szczegółów.

Więc --supervise pracować tylko w trybie klastra Autonomiczna Jeżeli wniosek zostanie złożony w trybie Yarn przędza Cluster następnie zajmie ponowne uruchomienie sterownika jako skonfigurowany w nieruchomości mapreduce.am.max-prób w mapred miejscu .xml, więc twój kod powinien być taki, że usuwa katalog wyjściowy i zaczyna się od zera, inaczej zakończy się niepowodzeniem z błędem katalogu wyjściowego, który już istnieje.

Powiązane problemy