Czy użytkownicy Sparka powinni się martwić czy ekscytować Flinkiem?

Po tym, jak dane zostały nazwane najcenniejszym zasobem na świecie, nie jest zaskoczeniem, że dzisiejszy świat IT to przede wszystkim dane – im więcej, tym lepiej.

Ponieważ tylko w 2022 roku powstanie 97 zettabajtów informacji, a w 2025 roku ich ilość ma przekroczyć 180 zettabajtów, globalni liderzy w dziedzinie BigData zwracają jeszcze większą uwagę na znalezienie nowych sposobów przyspieszenia pozyskiwania, analizy i przetwarzania danych. Ogromne klastry stały się codziennym środowiskiem pracy, zostały spopularyzowane i stały się wszechobecne w firmach na poziomie korporacji. Do tego doszły technologie towarzyszące, takie jak Apache Spark czy ostatnio Apache Flink.

Spark kojarzył się z szybkością obliczeń, potem do głosu doszedł Flink, który okazał się szybszy w niektórych zadaniach dzięki swojemu silnikowi przetwarzania strumieniowego zapewniającemu nawet pięciokrotne przyspieszenie obliczeń. Czy jednak użytkownicy Sparka powinni obawiać się, że ich wybrana technologia wyginie?
W tym artykule postaramy się porównać te dwie technologie pod względem wydajności, zaplecza technologicznego i społeczności.

W przypadku Apache Flink bez wątpienia zwraca uwagę operatorowy model obliczeniowy oraz wykorzystanie silnika strumieniowego dla wszystkich rodzajów obciążeń, dzięki czemu przetwarzanie w czasie rzeczywistym jest bardziej zoptymalizowane. Wykonanie potokowe jeszcze bardziej przyspiesza ten proces. Brak minimalnego opóźnienia danych to kolejny miły haczyk. Z drugiej strony, model mikrowątkowy stanowi fundament modelu obliczeniowego Apache Spark i jest stosowany do każdego napotkanego obciążenia – w świecie Sparka streaming to po prostu naprawdę szybkie przetwarzanie małych batchy. Stąd każdy scenariusz związany z ogromnymi zbiorami lub live-data będzie miał lepsze wyniki używając Flink.

https://www.researchgate.net/figure/Grep-count-for-Spark-vs-Flink_fig13_301797425

A jednak! To właśnie społeczność stojąca za każdą technologią zazwyczaj decyduje o jej sukcesie i tutaj Spark ma znaczącą przewagę. Dzięki wysokopoziomowemu, łatwemu w użyciu API w Scali, Javie, Pythonie i R ma znacznie większy zasięg niż znacznie mniej popularne API Flaska, które obsługuje tylko Javę i Scalę. Ponieważ oba rozwiązania są open-source, również tutaj widoczna jest różnica we wsparciu społeczności – repozytorium Sparka liczy 1833 współpracowników, podczas gdy Flink jest rozwijany przez 1060 osób (stan na 25.09.2022).

Flink wspiera automatyczną optymalizację, podczas gdy Spark korzysta z manualnej. Apache Flink stosuje mechanizm fault tolerance oparty na rozproszonych snapshotach Chandy-Lamport, Spark natomiast wykorzystuje Write-Ahead Logging (WAL), gdyż zapisuje wszystkie otrzymane dane do plików logów znajdujących się w katalogu checkpoint. Dzięki wykorzystaniu natywnej obsługi grafów zamkniętych, uczenie maszynowe i przetwarzanie wykresów jest szybsze w Flink.

Który z nich jest więc lepszy? Wszystko zależy od okoliczności i wymagań danego projektu. Dodatkowo należy rozważyć, z którym narzędziem zespół czuje się najlepiej. Tam, gdzie potrzebna jest szybsza wydajność na dużych zbiorach danych Flink może być bronią z wyboru, jednak jeśli elastyczność API jest tym, czego szukasz, to Spark przychodzi z pomocą.

Czy kiedykolwiek używałeś którejś z tych technologii? Co było ich najlepszą cechą według Ciebie? Daj nam znać w komentarzach!