Apache Flink - Architektura

Apache Flink pracuje nad architekturą Kappa. Architektura Kappa ma pojedynczy procesor - strumień, który traktuje wszystkie dane wejściowe jako strumień, a silnik przesyłania strumieniowego przetwarza dane w czasie rzeczywistym. Dane wsadowe w architekturze kappa to szczególny przypadek przesyłania strumieniowego.

Poniższy diagram przedstawia Apache Flink Architecture.

Kluczową ideą w architekturze Kappa jest obsługa zarówno danych wsadowych, jak i danych w czasie rzeczywistym za pośrednictwem silnika przetwarzania pojedynczego strumienia.

Większość frameworków do dużych zbiorów danych działa na architekturze Lambda, która ma oddzielne procesory dla danych wsadowych i strumieniowych. W architekturze Lambda masz oddzielne bazy kodów dla widoków wsadowych i strumieniowych. Aby wykonać zapytanie i uzyskać wynik, należy scalić bazy kodów. Nieutrzymywanie oddzielnych baz kodów / widoków i łączenie ich jest uciążliwe, ale architektura Kappa rozwiązuje ten problem, ponieważ ma tylko jeden widok - w czasie rzeczywistym, dlatego scalanie bazy kodu nie jest wymagane.

Nie oznacza to, że architektura Kappa zastępuje architekturę Lambda, całkowicie zależy od przypadku użycia i aplikacji, która decyduje, która architektura byłaby lepsza.

Poniższy diagram przedstawia architekturę wykonywania zadań Apache Flink.

Program

Jest to fragment kodu, który uruchamiasz w klastrze Flink.

Klient

Odpowiada za pobranie kodu (programu) i zbudowanie wykresu przepływu pracy, a następnie przekazanie go do JobManager. Pobiera również wyniki zadania.

JobManager

Po otrzymaniu Job Dataflow Graph od Klienta odpowiada za stworzenie wykresu wykonania. Przydziela zadanie do TaskManagerów w klastrze i nadzoruje wykonanie zadania.

Menadżer zadań

Jest odpowiedzialny za wykonanie wszystkich zadań, które zostały przydzielone przez JobManager. Wszyscy menedżerowie zadań uruchamiają zadania w swoich oddzielnych gniazdach z określoną równoległością. Odpowiada za wysyłanie statusu zadań do JobManager.

Funkcje Apache Flink

Funkcje Apache Flink są następujące -

  • Posiada procesor przesyłania strumieniowego, który może uruchamiać zarówno programy wsadowe, jak i strumieniowe.

  • Potrafi przetwarzać dane z prędkością błyskawicy.

  • API dostępne w Javie, Scali i Pythonie.

  • Zapewnia interfejsy API dla wszystkich typowych operacji, co jest bardzo łatwe w użyciu dla programistów.

  • Przetwarza dane z małym opóźnieniem (nanosekund) i dużą przepustowością.

  • Jest odporny na uszkodzenia. Jeśli węzeł, aplikacja lub sprzęt ulegną awarii, nie ma to wpływu na klaster.

  • Można łatwo zintegrować z Apache Hadoop, Apache MapReduce, Apache Spark, HBase i innymi narzędziami do dużych zbiorów danych.

  • Zarządzanie w pamięci można dostosować dla lepszych obliczeń.

  • Jest wysoce skalowalny i może skalować się do tysięcy węzłów w klastrze.

  • Okienkowanie jest bardzo elastyczne w Apache Flink.

  • Zapewnia przetwarzanie wykresów, uczenie maszynowe i biblioteki przetwarzania złożonych zdarzeń.