Apache Spark - wprowadzenie
Branże intensywnie używają Hadoop do analizowania swoich zestawów danych. Powodem jest to, że platforma Hadoop jest oparta na prostym modelu programowania (MapReduce) i umożliwia rozwiązanie obliczeniowe, które jest skalowalne, elastyczne, odporne na błędy i opłacalne. Tutaj głównym problemem jest utrzymanie szybkości przetwarzania dużych zbiorów danych pod względem czasu oczekiwania między zapytaniami i czasu oczekiwania na uruchomienie programu.
Spark został wprowadzony przez Apache Software Foundation w celu przyspieszenia procesu tworzenia oprogramowania obliczeniowego Hadoop.
Wbrew powszechnemu przekonaniu Spark is not a modified version of Hadoopi tak naprawdę nie jest zależny od Hadoop, ponieważ ma własne zarządzanie klastrami. Hadoop to tylko jeden ze sposobów implementacji Spark.
Spark używa Hadoop na dwa sposoby - jeden to storage a po drugie processing. Ponieważ Spark ma własne obliczenia zarządzania klastrem, używa Hadoop tylko do przechowywania.
Apache Spark
Apache Spark to błyskawiczna technologia przetwarzania klastrów, zaprojektowana do szybkich obliczeń. Opiera się na Hadoop MapReduce i rozszerza model MapReduce, aby efektywnie używać go do większej liczby typów obliczeń, w tym zapytań interaktywnych i przetwarzania strumieni. Główną cechą Sparka jest jegoin-memory cluster computing co zwiększa szybkość przetwarzania aplikacji.
Spark jest przeznaczony do obsługi szerokiego zakresu obciążeń, takich jak aplikacje wsadowe, algorytmy iteracyjne, zapytania interaktywne i przesyłanie strumieniowe. Oprócz obsługi wszystkich tych obciążeń w odpowiednim systemie, zmniejsza obciążenie zarządzania związane z utrzymywaniem oddzielnych narzędzi.
Ewolucja Apache Spark
Spark jest jednym z podprojektów Hadoop opracowanych w 2009 roku w AMPLab UC Berkeley przez Matei Zaharia. Był to Open Sourced w 2010 roku na licencji BSD. Został przekazany fundacji oprogramowania Apache w 2013 r., A teraz Apache Spark stał się projektem najwyższego poziomu Apache od lutego 2014 r.
Funkcje Apache Spark
Apache Spark ma następujące funkcje.
Speed- Spark pomaga uruchomić aplikację w klastrze Hadoop, do 100 razy szybciej w pamięci i 10 razy szybciej podczas pracy na dysku. Jest to możliwe dzięki zmniejszeniu liczby operacji odczytu / zapisu na dysku. Przechowuje w pamięci pośrednie dane przetwarzania.
Supports multiple languages- Spark udostępnia wbudowane interfejsy API w Javie, Scali lub Pythonie. Dlatego możesz pisać aplikacje w różnych językach. Spark zawiera 80 operatorów wysokiego poziomu do interaktywnego wykonywania zapytań.
Advanced Analytics- Spark nie tylko obsługuje „Mapowanie” i „Zmniejszanie”. Obsługuje również zapytania SQL, dane strumieniowe, uczenie maszynowe (ML) i algorytmy wykresów.
Spark zbudowany na Hadoop
Na poniższym diagramie przedstawiono trzy sposoby tworzenia platformy Spark przy użyciu składników Hadoop.
Istnieją trzy sposoby wdrażania platformy Spark, jak wyjaśniono poniżej.
Standalone- Wdrożenie autonomiczne Spark oznacza, że Spark zajmuje miejsce na szczycie HDFS (rozproszony system plików Hadoop), a miejsce jest przydzielane jawnie na HDFS. Tutaj Spark i MapReduce będą działać obok siebie, aby pokryć wszystkie zadania iskry w klastrze.
Hadoop Yarn- Wdrożenie Hadoop Yarn oznacza po prostu, że iskra działa w Yarn bez konieczności wstępnej instalacji lub dostępu do roota. Pomaga zintegrować Spark z ekosystemem Hadoop lub stosem Hadoop. Pozwala to na działanie innych komponentów na szczycie stosu.
Spark in MapReduce (SIMR)- Spark w MapReduce służy do uruchamiania zadania iskrzenia oprócz samodzielnego wdrażania. Dzięki SIMR użytkownik może uruchomić Sparka i używać jego powłoki bez dostępu administratora.
Komponenty Spark
Poniższa ilustracja przedstawia różne składniki platformy Spark.
Apache Spark Core
Spark Core to podstawowy aparat wykonawczy dla platformy Spark, na którym są zbudowane wszystkie inne funkcje. Zapewnia przetwarzanie w pamięci i zestawy danych referencyjnych w zewnętrznych systemach pamięci masowej.
Spark SQL
Spark SQL to komponent znajdujący się na szczycie Spark Core, który wprowadza nową abstrakcję danych o nazwie SchemaRDD, która zapewnia obsługę danych ustrukturyzowanych i częściowo ustrukturyzowanych.
Spark Streaming
Spark Streaming wykorzystuje możliwości szybkiego planowania Spark Core do przeprowadzania analizy strumieniowej. Pozyskuje dane w mini-partiach i przeprowadza transformacje RDD (Resilient Distributed Datasets) na tych mini-partiach danych.
MLlib (biblioteka uczenia maszynowego)
MLlib to rozproszona platforma uczenia maszynowego powyżej platformy Spark ze względu na rozproszoną architekturę Spark opartą na pamięci. Jest to, zgodnie z benchmarkami, wykonane przez programistów MLlib w porównaniu z implementacjami alternatywnych najmniejszych kwadratów (ALS). Spark MLlib jest dziewięć razy szybszy niż wersja dyskowa platformy HadoopApache Mahout (zanim Mahout zyskał interfejs Sparka).
GraphX
GraphX to rozproszony framework do przetwarzania wykresów na szczycie Spark. Zapewnia interfejs API do wyrażania obliczeń wykresów, który może modelować wykresy zdefiniowane przez użytkownika za pomocą interfejsu API abstrakcji Pregel. Zapewnia również zoptymalizowane środowisko wykonawcze dla tej abstrakcji.