Architektura ITPolecane tematy

Czym jest Spark Apache i w jaki sposób go wykorzystać

Spark to platforma obliczeniowa ogólnego przeznaczenia, złożona z wielu środowisk narzędziowych, zoptymalizowanych pod kątem różnych aplikacji. Oparta została jednak na wspólnym silniku przetwarzania. Tylko co to, w praktyce, oznacza? Spark można rozpatrywać zarówno z punktu widzenia programisty, inżyniera danych, jak i administratora…

Czym jest Spark Apache i w jaki sposób go wykorzystać

Programiści pracując na poziomie tzw. leniwych kolekcji rozproszonych sięgną po – właściwe dla preferowanych języków programowania – interfejsy API pozwalające na wykonywanie transformacji na danych. Z kolei inżynierowie danych skorzystają z rozwiązań opartych na wyższym poziomie abstrakcji – jak interfejsy DataFrames, czy Pipelines – lub z zewnętrznych narzędzi zintegrowanych z platformą Spark. Wszystko to zaś jest możliwe dzięki zaangażowaniu adminstratorów odpowiedzialnych za konfigurację klastrów Spark, na których uruchamiane są stosowne aplikacje.

Artykuł pochodzi z najnowszego numeru ITwiz 11-12/2015.

Kiedy słyszysz nazwę Apache Spark może chodzić o dwie rzeczy – silnik Spark nazywany też Spark Core lub projekt Spark – termin ogólny, obejmujący silnik przetwarzania wraz ztowarzyszącymi mu narzędziami, takimi jak: Spark SQL, Spark Streaming, Spark MLlib oraz Spark GraphX. Stanowią one nakładkę na Spark Core i główną warstwę abstrakcji rozproszonych zbiorów danych Spark RDD (Resilient Distributed Dataset). Pod względem nazewnictwa platforma Spark jest podobna do Hadoop, a także pozostaje pod jej silnym wpływem.

Apache Spark to rozwijana na zasadach open source, ogólnego zastosowania platforma klastrowego przetwarzania danych wyposażona w funkcje in-memory na potrzeby przetwarzania zbiorów Big Data oraz interfejsy API dla języków programowania: Scala, Python, Java i R. W przeciwieństwie – do stosowanego w Hadoop – dwuetapowego, opartego na dyskach twardych silnika przetwarzania MapReduce, stosowane w Spark systemie wieloetapowe przetwarzanie odbywa się w oparciu o technologię in-memory. Umożliwia to wykonywanie większości obliczeń wprost w pamięci operacyjnej, dlatego często wydajność tej platformy jest znacznie wyższa niż w Hadoop. W niektórych zastosowaniach, np. alogrytmach iteracyjnych lub interaktywnej eksploracji danych, różnice wydajnościowe mogą sięgać nawet 100-krotności na korzyść platformy Spark (porównanie w tabeli).

Dla firm przetwarzających duże ilości danych i potrzebujących platformy zapewniającej minimalne opóźnienia w przetwarzaniu danych – których nie może zapewnić Hadoop MapReduce – Spark staje się znakomitą alternatywą. Za pomocą tej platformy można obsługiwać z dużą szybkością przetwarzanie ogromnych zbiorów danych. Spark ma dwa tryby działania: wsadowy i strumieniowy. Cechą charakterystyczną tej platformy ma być także wysoka wydajność i łatwość użycia.

Specyfika działania Hadoop MapReduce ograniczała możliwość wielokrotnego wykorzystywania danych lub wyników czątkowych na potrzeby kolejnych operacji przetwarzania. Można było ponownie wykorzystywać dane pomiędzy zadaniami obliczeniowymi (lub ich fragmentami) dopiero po zapisaniu ich do zewnętrznej pamięci, np.HDFS. Tymczasem jednym z głównych powodów stojących za stworzeniem środowiska Spark była zaś chęć opracowanie platformy umożliwiającej łatwe, ponowne wykorzystywanie przetwarzanych danych bez konieczności ponownego ich zapisu, a następnie odczytu.

Spark to także rozproszona platforma, przeznaczona do uruchamiania złożonych aplikacji wymagających wieloetapowych obliczeń lub wykorzystujących złożone algorytmy – np. uczenia maszynowego – lub interaktywne, tworzone ad hoc kwerendy. Spark pełni bowiem role wydajnej warstwy abstrakcji do przetwarzania klastrowego w pamięci operacyjnej. Na wyższym poziomie każda aplikacja Spark tworzy zbiory RDD z danych wejściowych, wykonuje (leniwe) transformacje tych zbiorów do innej postaci , a następnie uruchamia działania zapisu lub odczytu danych.

Za sprawą dodatkowych silników bazujących na platformie Apache Spark, projekt ten wspiera też przetwarzanie SQL (oparte na narzędzi DataFrames), przetwarzanie strumieniowe oraz uczenie maszynowe i przetwarzanie grafów. Za sprawą ujednoliconego API wszystkie te mechanizmy można łatwo wykorzystać w ramach jednej aplikacji. Z kolei dostępne w Apache Spark modele programowania strumieniowego i zapytań SQL – Spark Mlib i Spark GraphX – ułatwiają programistom oraz inżynierom danych tworzenie aplikacji wykorzystujących algorytmy uczenia maszynowego oraz analizygrafów. Wykorzystanie funkcji uczenia maszynowego oraz analizy predykcyjnej ułatwia też pakiet Spark Application Frameworks.

Platfoemę Spark można uruchamić na pojedynczej maszynie i w środowisku klastrowym, w ramach infrastruktury lokalnej lub w chmurze (np. w środowiskach Amazon EC2 lub IBM Bluemix). Spark może działać także w oparciu o środowiska takie, jak: Hadoop YARN i Apache Mesos. Warto zaznaczyć, że chociaż platformę Spark stworzono głównie w języku Scala, to obsługuje ona też języki Java, Python i R.

Dlaczego jednak warto wybrać Spark? Więcej w najnowszym numerze ITwiz 11-12/2015.

Tagi

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *