Apache Flink vs Spark – Czy jeden wyprzedzi drugiego?

Ostatnia aktualizacja: 25 Jan 2021

Apache Spark i Apache Flink są zarówno open- sourcowymi, rozproszonymi ramami przetwarzania, które zostały zbudowane w celu zmniejszenia opóźnień Hadoop Mapreduce w szybkim przetwarzaniu danych. Istnieje powszechne błędne przekonanie, że Apache Flink zastąpi Sparka, czy też jest możliwe, że obie te technologie big data będą współistnieć, służąc podobnym potrzebom w zakresie odpornego na błędy, szybkiego przetwarzania danych. Apache Spark i Flink mogą wydawać się podobne dla kogoś, kto nie pracował z żadną z nich i jest zaznajomiony tylko z Hadoopem, i oczywiste jest, że będzie uważał, że rozwój Apache Flink jest w większości zbędny. Jednak Flink zdołał utrzymać się w grze dzięki swojej funkcji przetwarzania strumieniowego, która pozwala na przetwarzanie rzędów danych w czasie rzeczywistym – co nie jest możliwe w przypadku metody przetwarzania wsadowego Apache Spark. Dzięki temu Flink jest szybszy od Sparka.

Według badań IBM, każdego dnia tworzymy około 2,5 kwintyliona bajtów danych – a tempo generowania danych nadal rośnie w niespotykanym dotąd tempie. Aby spojrzeć na to z innej perspektywy, około 90% wszystkich danych istniejących na świecie zostało stworzonych w ciągu ostatnich dwóch lat, mimo że World Wide Web jest publicznie dostępny od ponad dwóch dekad. Wraz z rozwojem Internetu rosła liczba użytkowników, a stale rosnące zapotrzebowanie na treści utorowało drogę dla Web 2.0 w ostatniej dekadzie. To był pierwszy raz, że użytkownicy mogli tworzyć własne dane w Internecie i był gotowy do konsumpcji przez głodnych danych publiczności.

Wtedy to była kolej mediów społecznościowych do inwazji na nasze życie. Według raportu wersm (we are social media), Facebook dostaje ponad 4 miliony polubień w ciągu minuty! Dane generowane przez inne popularne źródła są wymienione na infografice (zaczerpniętej z tego samego badania wersm), zanim przyjrzymy się, jak te dane są konsumowane.

Big Data Facts and Figures Infographic

„Jak przechowywać te ogromne ilości danych?” było stwierdzeniem problemu, który trzymał tech geeków zajętych przez większą część poprzedniej dekady. Nagły rozwój mediów społecznościowych nie ułatwiał im zadania. Jednak nowe rozwiązania przechowywania danych, takie jak Cloud Computing, zrewolucjonizowały branżę i przedstawiły najlepsze możliwe rozwiązanie. W obecnej dekadzie, stwierdzenie problemu przesunęło się na „Co zrobić z ogromnymi kawałkami danych?”. Analityka danych wyłoniła się jako ostateczny cel, ale zanim to nastąpi, należy wykonać wiele pracy, aby zintegrować dane przechowywane w różnych formatach w różnych źródłach i przygotować je do przetwarzania i analizy, co jest wymagającym zadaniem.

Dla pełnej listy firm zajmujących się big data i ich wynagrodzeń – KLIKNIJ TUTAJ

Nasze dwa tematy na dziś – Apache Spark i Apache Flink – próbują odpowiedzieć na to pytanie i nie tylko.

Apache Spark vs Flink

Apache Spark

Spark jest otwartym źródłem, klastrowym frameworkiem obliczeniowym, który ma dużą globalną bazę użytkowników. Jest napisany w Scali, Javie, R i Pythonie i daje programistom interfejs programowania aplikacji (API) zbudowany na odpornym na błędy, tylko do odczytu, wielozbiorze rozproszonych elementów danych. W krótkim czasie 2 lat od jego początkowego wydania (maj 2014), widział szeroką akceptację dla czasu rzeczywistego, in-memory, zaawansowanej analityki – dzięki swojej szybkości, łatwości użycia i zdolności do obsługi wyrafinowanych wymagań analitycznych.

Apache Spark Training Online

Jeśli chcesz uzyskać więcej informacji na temat kariery w Big Data, kliknij pomarańczowy przycisk „Request Info” na górze tej strony.

Wady Sparka

Apache Spark ma kilka zalet w stosunku do tradycyjnych technologii opartych na Big Data i MapReduce. Najważniejsze z nich to. Zasadniczo przenosi MapReduce na następny poziom z wydajnością, która jest kilka razy szybsza. Jednym z kluczowych wyróżników Sparka jest jego zdolność do przechowywania pośrednich wyników w pamięci, zamiast zapisywania ich z powrotem na dysk i ponownego odczytywania z niego, co jest krytyczne dla przypadków użycia opartych na iteracji.

  • Szybkość – Spark może wykonywać zadania przetwarzania wsadowego 10 do 100 razy szybciej niż MapReduce. Nie oznacza to, że pozostaje w tyle, gdy dane muszą być zapisywane na dysku (i pobierane z dysku), ponieważ jest światowym rekordzistą w sortowaniu na dysku na dużą skalę.
  • Łatwość użycia – Apache Spark ma łatwe w użyciu interfejsy API, stworzone do pracy na dużych zbiorach danych.
  • Zunifikowany silnik – Spark może działać na Hadoop, wykorzystując jego menedżera klastrów (YARN) i bazową pamięć masową (HDFS, HBase itp.). Może również działać niezależnie od Hadoop, łącząc się z innymi menedżerami klastrów i platformami pamięci masowej (takimi jak Cassandra i Amazon S3). Spark jest również wyposażony w biblioteki wyższego poziomu, które obsługują strumieniowe zapytania SQL, uczenie maszynowe i przetwarzanie grafów.
  • Wybierz spośród Java, Scala lub Python – Spark nie przywiązuje Cię do konkretnego języka i pozwala Ci wybrać spośród popularnych, takich jak Java, Scala, Python, R, a nawet Clojure.
  • Współdzielenie danych w pamięci – Różne zadania mogą współdzielić dane w pamięci, co czyni go idealnym wyborem dla zadań iteracyjnych, interaktywnych i przetwarzania strumieni zdarzeń.
  • Aktywna, rozwijająca się społeczność użytkowników – Aktywna społeczność użytkowników doprowadziła do stabilnego wydania Sparka (w czerwcu, 2016) w ciągu 2 lat od jego początkowej premiery. To mówi wiele o jego światowej akceptowalności, która rośnie.

Apache Flink

Niemiecki dla „szybkiego” lub „zwinnego”, Apache Flink jest najnowszym uczestnikiem listy frameworków open-source skupionych na Big Data Analytics, które próbują zastąpić starzejące się MapReduce Hadoopa, podobnie jak Spark. Flink otrzymał swoją pierwszą wersję API-stable wydaną w marcu 2016 roku i jest zbudowany do przetwarzania danych wsadowych in-memory, podobnie jak Spark. Model ten jest bardzo przydatny, gdy trzeba wykonać wielokrotne przejścia na tych samych danych. To czyni go idealnym kandydatem do uczenia maszynowego i innych przypadków użycia, które wymagają adaptacyjnego uczenia się, samouczących się sieci itp. Z nieuchronnym boomem przestrzeni Internetu rzeczy (IoT), społeczność użytkowników Flink ma kilka ekscytujących wyzwań, na które musi czekać.

Wady Flink

  • Rzeczywisty silnik przetwarzania strumieniowego, który może przybliżać przetwarzanie wsadowe, a nie być na odwrót.
  • Lepsze zarządzanie pamięcią – Wyraźne zarządzanie pamięcią pozbywa się sporadycznych skoków znalezionych w ramach Spark.
  • Szybkość – Zarządza szybszymi prędkościami, pozwalając na iteracyjne przetwarzanie odbywające się na tym samym węźle, zamiast posiadania klastra uruchamiającego je niezależnie. Jego wydajność może być dalej dostrajana poprzez dostosowanie go do ponownego przetwarzania tylko tej części danych, która uległa zmianie, a nie całego zestawu. Oferuje on nawet pięciokrotny wzrost szybkości w porównaniu ze standardowym algorytmem przetwarzania.
  • Mniej konfiguracji

Apache Flink vs Spark

Do czasu pojawienia się Flinka, Apache Spark był już de facto frameworkiem dla szybkich, in-memory’owych wymagań analitycznych big data dla wielu organizacji na całym świecie. To sprawiło, że Flink wydawał się zbędny. W końcu, dlaczego ktoś miałby potrzebować kolejnego silnika przetwarzania danych, podczas gdy jury wciąż nie było przekonane co do istniejącego? Trzeba zagłębić się w możliwości Flinka, aby zaobserwować, co go wyróżnia, choć wielu analityków określiło go mianem „4G of Data Analytics”.

Głęboko osadzony w ustawieniach Sparka jest niewielki słaby punkt, który Flink stara się wykorzystać. Chociaż jest to prawdą dla celów swobodnych dyskusji, Spark nie jest czysto silnikiem przetwarzania strumieniowego. Jak zauważył Ian Pointer w artykule InfoWorld „Apache Flink: New Hadoop contender squares off against Spark”, Spark jest zasadniczo szybką operacją wsadową, która działa tylko na niewielkiej części przychodzących danych w jednostce czasu. W swojej oficjalnej dokumentacji Spark określa to jako „micro batching”. Jest mało prawdopodobne, aby ten problem miał jakiekolwiek praktyczne znaczenie dla operacji, chyba że przypadek użycia wymaga niskiej latencji (systemy finansowe), gdzie opóźnienie rzędu milisekund może spowodować znaczący wpływ. To powiedziawszy, Flink jest w dużej mierze pracą w toku i nie może jeszcze zastąpić Sparka.

Flink jest frameworkiem przetwarzania strumieniowego, który może wykonywać zadania wymagające przetwarzania wsadowego, dając możliwość użycia tego samego algorytmu w obu trybach, bez konieczności zwracania się do technologii takich jak Apache Storm, która wymaga odpowiedzi o niskiej latencji.

Zarówno Spark, jak i Flink obsługują przetwarzanie w pamięci, co daje im wyraźną przewagę szybkości nad innymi frameworkami. Jeśli chodzi o przetwarzanie w czasie rzeczywistym danych przychodzących, Flink nie stoi w opozycji do Sparka, chociaż ma możliwość wykonywania zadań przetwarzania w czasie rzeczywistym.

Spark i Flink mogą obsługiwać iteracyjne przetwarzanie w pamięci. Jeśli chodzi o szybkość, Flink zyskuje przewagę, ponieważ można go zaprogramować do przetwarzania tylko tych danych, które się zmieniły, czyli tam, gdzie jest lepszy od Sparka.

Historie rozwoju – Spark i Flink

Każdy framework oprogramowania potrzebuje czegoś więcej niż tylko technicznej wiedzy, aby móc pomóc firmom w uzyskaniu maksymalnej wartości. W tej sekcji zagłębiamy się w artykuł Apache Spark 2015 Year in Review autorstwa Databricks, aby zobaczyć, jak radził sobie w globalnej społeczności użytkowników i deweloperów. W ciągu roku ukazały się 4 wydania (od 1.3 do 1.6), każde z nich z setkami poprawek usprawniających framework. To co przykuło naszą uwagę to wzrost liczby współtworzących go deweloperów – z 500 w 2014 do ponad 1000 w 2015! Kolejną zauważalną rzeczą w Sparku jest łatwość, z jaką jego użytkownicy przechodzą na nowe wersje. Raport wspomina, że w ciągu trzech miesięcy większość użytkowników adoptuje się do najnowszej wersji. Te fakty wzmacniają jego reputację jako najbardziej aktywnie rozwijanego (i adoptowanego) narzędzia open source do przetwarzania danych.

Flink był stosunkowo późno w wyścigu, ale 2015 rok w przeglądzie na jego oficjalnej stronie pokazuje, dlaczego jest tutaj, aby pozostać jako najbardziej kompletny open source stream processing frameworks dostępne. Repozytorium Flink’a na githubie (Get the Repository – Here) pokazuje, że społeczność podwoiła swój rozmiar w 2015 roku – z 75 współpracowników do 150. Widełki repozytorium wzrosły ponad trzykrotnie w ciągu roku, podobnie jak liczba gwiazd repozytorium. Zaczynając od Berlina, Niemcy, widział, jak jego społeczność użytkowników rozrasta się na kontynentach do Ameryki Północnej i Azji. Konferencja Flink Forward była kolejnym kamieniem milowym dla Flink, w której wzięło udział ponad 250 uczestników, gdzie ponad 100 osób przyjechało z całego świata, aby uczestniczyć w technicznych wykładach organizacji takich jak Google, MongoDB, Telecom, NFLabs, RedHat, IBM, Huawei, Ericsson, Capital One, Amadeus i wielu innych.

Chociaż jest jeszcze wcześnie, aby wyróżnić jeden z tych dwóch jako wyraźnego zwycięzcę, jesteśmy zdania, że zamiast posiadania wielu frameworków robiących to samo, świat technologii byłby lepiej obsługiwany przez nowe podmioty robiące różne rzeczy i uzupełniające istniejące, a nie konkurujące z nimi.

Szkolenie online Apache Spark

PREVIOUS

NEXT

.