Dostępna jest system rozproszonych obliczeń Apache Storm 2.0

Zobaczył światło znaczące wydanie systemu rozproszonego przetwarzania zdarzeń Apache Storm 2.0, z zauważalnym przejściem na nową architekturę, zaimplementowaną w języku Java, zamiast wcześniej używanego języka Clojure.

Projekt umożliwia zorganizowanie gwarantowanego przetwarzania różnych zdarzeń w czasie rzeczywistym. Na przykład, Storm można wykorzystać do analizy strumieni danych w czasie rzeczywistym, realizacji zadań z zakresu uczenia maszynowego, organizacji obliczeń ciągłych, realizacji RPC, ETL itp. System wspiera klasteryzację, tworzenie konfiguracji odpornych na awarie, tryb gwarantowanego przetwarzania danych i charakteryzuje się wysoką wydajnością, wystarczającą do przetwarzania ponad miliona zapytań na sekundę na jednym węźle klastra.

Wsparcie dla integracji z różnymi systemami kolejkowania oraz technologiami baz danych. Architektura Storm zakłada odbiór i przetwarzanie nieustrukturyzowanych, stale aktualizowanych strumieni danych z wykorzystaniem dowolnych złożonych procesorów z możliwością sekcjonowania między różnymi etapami obliczeń. Projekt został przekazany społeczności Apache po przejęciu przez Twitter firmy BackType, która pierwotnie opracowała ten framework. W praktyce Storm był wykorzystywany w BackType do analizy odbicia zdarzeń w mikroblogach, poprzez dopasowywanie na bieżąco nowych tweetów i używanych w nich linków (np. oceniano, jak zewnętrzne linki lub publikowane w Twitterze zapowiedzi są retransmitowane przez innych uczestników).

Funkcjonalność Storm porównywana jest z platformą Hadoop, przy czym kluczową różnicą jest to, że dane nie są umieszczane w magazynie, lecz napływają z zewnątrz i są przetwarzane w czasie rzeczywistym. W Storm nie ma wbudowanej warstwy do zarządzania magazynem, a zapytanie analityczne zaczyna być stosowane do przychodzących danych, aż do momentu, gdy zostanie anulowane (jeśli w Hadoop używane są zajmujące czas końcowy prace MapReduce, w Storm zastosowana jest idea ciągłego wykonywania „topologii”). Wykonanie procesorów może być rozdzielone na kilka serwerów — Storm automatycznie równolegle przetwarza strumienie na różne węzły klastra.

Oryginalnie system został napisany w języku Clojure i działa w wirtualnej maszynie JVM. W fundacji Apache rozpoczęto inicjatywę przetłumaczenia Storm na nowe jądro, napisane w Javie, której wyniki zostały zaprezentowane w wydaniu Apache Storm 2.0. Wszystkie podstawowe komponenty platformy zostały przepisaane w Javie. Obsługa pisania przetworników w Clojure została zachowana, ale teraz oferowana jest w formie wiązań. Do działania Storm 2.0.0 wymagana jest Java 8. Całkowicie przeprojektowano model przetwarzania wielowątkowego, co pozwoliło osiągnięcie na znaczący wzrost wydajności (dla niektórych topologii opóźnienia zostały skrócone o 50-80%).

Dostępna jest system rozproszonych obliczeń Apache Storm 2.0

W nowej wersji wprowadzono także nowy typizowany API Streams, umożliwiający definiowanie przetworników za pomocą operacji w stylu programowania funkcyjnego. Nowe API jest zbudowane na podstawie standardowego API i wspiera automatyczne łączenie operacji w celu optymalizacji ich przetwarzania. W API Windowing dla operacji okienkowych dodano wsparcie dla zapisywania i przywracania stanu w zapleczu.

Do planisty uruchamiania przetworników dodano wsparcie dla uwzględnienia dodatkowych zasobów przy podejmowaniu decyzji, nie ograniczających się
do CPU i pamięci, takich jak parametry sieci i GPU. Wprowadzono wiele ulepszeń związanych z integracją z platformą Kafka. Rozszerzono system kontroli dostępu, w którym pojawiła się możliwość tworzenia grup administratorów i delegowania tokenów. Dodano ulepszenia związane z obsługą SQL i metryk. W interfejsie administratora pojawiły się nowe polecenia do debugowania stanu klastra.

Obszary zastosowania Storm:

  • Przetwarzanie strumieni nowych danych lub aktualizacji bazy danych w czasie rzeczywistym;
  • Nieprzerwane obliczenia: Storm może wykonywać nieprzerwane zapytania i przetwarzać nieprzerwane strumienie, przekazując wyniki przetwarzania klientowi w czasie rzeczywistym.
  • Zdalne wywołanie procedur (RPC): Storm może być używany do zapewnienia równoległości wykonywania zasobożernych zapytań. Zadanie („topologia”) w Storm to rozproszona funkcja, która oczekuje na przychodzące wiadomości do przetworzenia. Po otrzymaniu wiadomości funkcja przetwarza ją w lokalnym kontekście i zwraca wynik. Przykładem zastosowania rozproszonego RPC może być równoległe przetwarzanie zapytań wyszukiwania lub wykonywanie operacji na dużych zbiorach.

Cechy Storm:

  • Prosty model programowania, znacznie upraszczający przetwarzanie danych w czasie rzeczywistym;
  • Wsparcie dla dowolnych języków programowania. Istnieją moduły dla języków Java, Ruby i Python, a dostosowanie do innych języków nie sprawia trudności dzięki bardzo prostemu protokołowi komunikacyjnemu, którego implementacja zajmuje około 100 linii kodu;
  • Odporność na błędy: aby uruchomić zadanie przetwarzania danych, należy utworzyć plik jar z kodem. Storm samodzielnie rozprowadzi ten plik jar po węzłach klastra, podłączy związane z nim przetwarzacze i zorganizuje monitoring. Po zakończeniu zadania kod zostanie automatycznie odłączony na wszystkich węzłach;
  • Pozioma skalowalność. Wszystkie obliczenia są wykonywane równolegle, a w przypadku wzrostu obciążenia wystarczy po prostu podłączyć nowe węzły do klastra;
  • Niezawodność. Storm gwarantuje, że każda przychodząca wiadomość zostanie w pełni przetworzona co najmniej raz. Wiadomość zostanie przetworzona tylko raz, jeśli nie wystąpią żadne błędy podczas przechodzenia przez wszystkie przetwórcze, w przeciwnym razie nieudane próby przetwarzania będą powtarzane.
  • Szybkość. Kod Storm został napisany z myślą o wysokiej wydajności i wykorzystuje do szybkiej asynchronicznej wymiany wiadomości system ZeroMQ.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster