Apache Storm - architektura klastra
Jedną z głównych zalet Apache Storm jest to, że jest to odporna na błędy, szybka i pozbawiona rozproszonych aplikacji typu „Single Point of Failure” (SPOF). Możemy zainstalować Apache Storm w tylu systemach, ile potrzeba, aby zwiększyć pojemność aplikacji.
Przyjrzyjmy się, jak został zaprojektowany klaster Apache Storm i jego wewnętrzna architektura. Poniższy diagram przedstawia projekt klastra.
Apache Storm ma dwa typy węzłów, Nimbus (węzeł główny) i Supervisor(węzeł roboczy). Nimbus to centralny składnik Apache Storm. Głównym zadaniem Nimbusa jest uruchomienie topologii Storm. Nimbus analizuje topologię i zbiera zadanie do wykonania. Następnie przydzieli zadanie do dostępnego przełożonego.
Przełożony będzie miał jeden lub więcej procesów roboczych. Przełożony przekaże zadania do procesów roboczych. Proces roboczy utworzy tyle programów wykonawczych, ile potrzeba, i uruchomi zadanie. Apache Storm wykorzystuje wewnętrzny rozproszony system przesyłania wiadomości do komunikacji między nimbusem a przełożonymi.
składniki | Opis |
---|---|
Chmura | Nimbus to główny węzeł klastra Storm. Wszystkie inne węzły w klastrze nazywane są jakoworker nodes. Węzeł główny jest odpowiedzialny za dystrybucję danych do wszystkich węzłów roboczych, przydzielanie zadań do węzłów roboczych i monitorowanie awarii. |
Kierownik | Węzły, które wykonują instrukcje podane przez nimbus, nazywane są nadzorcami. ZAsupervisor ma wiele procesów roboczych i zarządza procesami roboczymi w celu wykonania zadań przypisanych przez nimbus. |
Proces roboczy | Proces roboczy będzie wykonywał zadania związane z określoną topologią. Proces roboczy nie uruchomi zadania samodzielnie, ale je utworzyexecutorsi prosi ich o wykonanie określonego zadania. Proces roboczy będzie miał wielu wykonawców. |
Wykonawca | Executor to nic innego jak pojedynczy wątek spawnowany przez proces roboczy. Wykonawca uruchamia jedno lub więcej zadań, ale tylko dla określonej wylewki lub śruby. |
Zadanie | Zadanie wykonuje faktyczne przetwarzanie danych. Jest to więc wylewka lub śruba. |
Framework ZooKeeper | Apache ZooKeeper to usługa używana przez klaster (grupę węzłów) do koordynowania między sobą i utrzymywania współdzielonych danych za pomocą zaawansowanych technik synchronizacji. Nimbus jest bezstanowy, więc monitorowanie stanu węzła roboczego zależy od ZooKeepera. ZooKeeper pomaga przełożonemu w interakcji z nimbem. Jest odpowiedzialny za utrzymywanie stanu nimbusa i nadzorcy. |
Storm ma charakter bezpaństwowy. Mimo że bezstanowa natura ma swoje wady, w rzeczywistości pomaga Storm przetwarzać dane w czasie rzeczywistym w najlepszy możliwy i najszybszy sposób.
Storm nie jest jednak całkowicie bezpaństwowy. Przechowuje swój stan w Apache ZooKeeper. Ponieważ stan jest dostępny w Apache ZooKeeper, uszkodzony nimbus można uruchomić ponownie i rozpocząć pracę od miejsca, w którym został. Zwykle narzędzia do monitorowania usług, takie jakmonit będzie monitorować Nimbus i ponownie go uruchamiać w przypadku awarii.
Apache Storm ma również zaawansowaną topologię o nazwie Trident Topologyz utrzymaniem stanu, a także zapewnia interfejs API wysokiego poziomu, taki jak Pig. Omówimy wszystkie te funkcje w następnych rozdziałach.