2014-05-07 27 views
10

Załóżmy, że mam 2 lub więcej executorów w aplikacji Spark Streaming.W jaki sposób zadania są przypisywane do executorów w strumieniu Spark?

Ustawiłem czas wsadowy na 10 sekund, więc zadanie jest uruchamiane co 10 sekund, odczytując dane wejściowe z mojego HDFS.

Jeśli każde zadanie trwa dłużej niż 10 sekund, nowe zadanie, które jest uruchamiane, jest przypisane do wolnego executora, prawda?

Nawet jeśli poprzednia nie została zakończona?

Wiem, że wydaje się oczywistą odpowiedzią, ale nie znalazłem nic na temat planowania pracy na stronie internetowej lub na papierze związanym ze Spark Streaming.

Jeśli znasz kilka linków, w których wyjaśniono wszystkie te rzeczy, naprawdę byłbym wdzięczny za ich obejrzenie.

Dziękuję.

Odpowiedz

20

W rzeczywistości w bieżącej implementacji Spark Streaming i domyślnej konfiguracji tylko zadanie jest aktywne (tzn. W trakcie wykonywania) w dowolnym momencie. Więc jeśli przetwarzanie jednej partii zajmie więcej niż 10 sekund, to następne zadania wsadowe pozostaną w kolejce.

Można to zmienić za pomocą eksperymentalnej właściwości Spark "spark.streaming.concurrentJobs", która jest domyślnie ustawiona na 1. Nie jest ona obecnie udokumentowana (może powinienem ją dodać).

Powodem, dla którego jest ustawiony na 1, jest to, że równoległe zadania mogą potencjalnie prowadzić do dziwnego współdzielenia zasobów, co może utrudnić debugowanie, czy w systemie są wystarczające zasoby do szybkiego przetworzenia przetworzonych danych. Przy jednorazowym uruchomieniu tylko jednego zadania, można łatwo zauważyć, że jeśli czas przetwarzania wsadowego wynosi <, system będzie stabilny. Przyznanie, że nie może to być najbardziej efektywne wykorzystanie zasobów w określonych warunkach. Na pewno mamy nadzieję poprawić to w przyszłości.

Jest trochę materiału odnośnie wewnętrznych elementów Spark Streaming na tych slajdach meetup (przykro mi, o bezwstydnej reklamie własnej :)). To może ci się przydać.

+0

Pracujemy nad projektem związanym z tymi rzeczami, więc z chęcią zajrzę do slajdów, aby zrozumieć więcej. Dziękuję. – gprivitera