Apache Storm – wprowadzenie, teoria

Apache Storm jest projektem open source i służy do przetwarzania strumieniowego w czasie rzeczywistym. Ułatwia wykonywanie działań na nieograniczonych strumieniach danych. Może być używany z dowolnym językiem programowania. Przed samym rozpoczęciem zabawy z Apache Storm przygotowałam trochę teorii, która ułatwi nam późniejszą pracę z tym projektem.

W Apache Storm wykorzystywany jest model pojedynczego przetwarzania strumieniowego, który reprezentowany jest za pomocą grafu obliczeniowego zwanego topologią (ang.topology). Polega on na przekształcaniu strumieni w nowe strumienie przy jednoczesnym aktualizowaniu bazy danych. W modelu tym za pomocą jednego pliku wdrożonego do klastra jesteśmy w stanie wykonywać różne operacje na różnych węzłach (np. filtrowanie danych w jednym węźle, agregacja w drugim). Nie musimy pisać osobnych programów dla każdego węzła.

Składowe modelu:

  • krotki (ang.tuples)
  • strumienie (ang.streams)
  • wylewki (ang.spouts)
  • gromy (ang.bolts)

Krotka jest ciągiem wartości (danych).

Strumień jest rdzeniem modelu składającym się z nieskończonej sekwencji krotek.

model_storm_1

Wylewka jest źródłem strumieni. Odczytuje ona dane i przekształca je w strumienie krotek.

model_storm_2

Grom wykonuje określone funkcje na strumieniach (np. złączenia, agregacje). Na wejściu dostaje przynajmniej jeden strumień wejściowy i generuje dowolną ilość strumieni wyjściowych.

model_storm_3

Po zdefiniowaniu wszystkich składowych powstaje topologia, która łączy wylewki i gromy oraz określa przepływ krotek przez aplikację.

Zadanie (ang.task) to instancja gromu lub wylewki. W modelu tym wykonywane są one równolegle.

Ponieważ zadania wykonywane są równolegle ważne jest określenie, które zadanie otrzyma daną krotkę. W tym celu wykorzystuje się grupowanie strumieni (ang. stream grouping). Najprostszym przykładem jest grupowanie tasujące (ang.shuffle grouping). Wykorzystuje ono losowy algorytm round-robin, aby równomiernie rozdzielić krotki na poszczególne zadania.

 

W następnych wpisach znajdziecie praktyczne zastosowanie przedstawionej teorii z wykorzystaniem Apache Storm.