Opracowany przez | Fundacja oprogramowania Apache |
---|---|
Pierwsza wersja | 30 maja 2014 |
Ostatnia wersja | 3.1.0 (5 stycznia 2021 r) |
Kaucja | github.com/apache/spark |
Napisane w | Scala , Java , Python , R , SQL ( d ) i Java Database Connectivity |
System operacyjny | Microsoft Windows , Linux i macOS |
Środowisko | Maszyna wirtualna Java |
Czytaj formaty | JavaScript Object Notation , wartości rozdzielane przecinkami , plik tekstowy , Apache Parquet i Optimized Row Columnar (ORC) ( d ) |
Formaty pisemne | Wartości oddzielone przecinkami , JavaScript Object Notation , Apache Parquet , plik tekstowy i zoptymalizowana kolumna wierszy (ORC) ( d ) |
Rodzaj |
Framework Struktura oprogramowania do uczenia maszynowego ( d ) Przetwarzanie w chmurze |
Licencja | Licencja Apache w wersji 2.0 i licencja BSD |
Stronie internetowej | spark.apache.org i spark.apache.org |
Spark (lub Apache Spark ) to framework open source do przetwarzania rozproszonego . Jest to zestaw narzędzi i komponentów oprogramowania zorganizowanych zgodnie ze zdefiniowaną architekturą. Opracowany na Uniwersytecie Kalifornijskim w Berkeley przez AMPLab, Spark jest dziś projektem Fundacji Apache . Ten produkt jest strukturą aplikacji do przetwarzania dużych zbiorów danych w celu wykonywania złożonych analiz na dużą skalę.
W 2009 roku Spark został zaprojektowany przez Matei Zaharia (w) podczas jego doktoratu na Uniwersytecie Kalifornijskim w Berkeley. Pierwotnie jego rozwój był rozwiązaniem przyspieszającym przetwarzanie systemów Hadoop . Twórcy szczególnie podkreślają szybkość produktu pod względem wykonywania zadań w porównaniu z MapReduce .
W 2013 roku, przekazany fundacji Apache, Spark stał się jednym z najbardziej aktywnych projektów tej ostatniej.
W 2014 roku Spark wygrał konkurs Daytona GraySort, którego celem jest jak najszybsze sortowanie 100 TB danych. Ten rekord był wcześniej w posiadaniu Hadoop. Aby to zrobić, Spark użył 206 maszyn z końcowym czasem pracy 23 minuty, podczas gdy Hadoop wykorzystał 2100 maszyn, a końcowy czas pracy wynosił 72 minuty . Potęgę Sparka zademonstrowano, będąc 3 razy szybszym i używając około 10 razy mniej maszyn.
Współautorzy, którzy uczestniczą w jego rozwoju, są liczni i pochodzą z około 200 różnych firm, takich jak Intel , Facebook , IBM i Netflix . Od 2015 roku było ponad 1000 autorów.
Spark wykonuje odczyt danych na poziomie klastra (klaster serwerów w sieci), wykonuje wszelkie niezbędne operacje analityczne, a następnie zapisuje wyniki na tym samym poziomie. Pomimo tego, że zadania są napisane w językach Scala , Java i Python , najlepiej wykorzystuje swoje możliwości w języku ojczystym Scala.
Tak więc tam, gdzie MapReduce Hadoop działa etapami, Spark może pracować na wszystkich danych w tym samym czasie. Dzięki temu jest do dziesięciu razy szybszy w przypadku przetwarzania wsadowego i do stukrotnie w przypadku wykonywania analiz w pamięci.
Spark wykonuje wszystkie operacje analizy danych w pamięci i w czasie rzeczywistym. Opiera się na dyskach tylko wtedy, gdy jego pamięć nie jest już wystarczająca. I odwrotnie, w przypadku Hadoop dane są zapisywane na dysku po każdej operacji. Ta praca pamięci skraca czasy latencji między zabiegami, co wyjaśnia taką szybkość.
Jednak Spark nie ma własnego systemu zarządzania plikami . Konieczne jest zapewnienie mu jednego, np. Hadoop Distributed File System , Informix , Cassandra , OpenStack Swift czy Amazon S3 ) . Zaleca się używanie go z Hadoop, który obecnie pozostaje najlepszym ogólnym rozwiązaniem pamięci masowej dzięki bardziej zaawansowanym narzędziom administracyjnym, zabezpieczającym i monitorującym .
W przypadku awarii lub awarii systemu: Obiekty danych są przechowywane w tak zwanych odpornych rozproszonych zbiorach danych ( RDD ) rozproszonych w klastrze danych, co umożliwia pełne odzyskanie danych.
RDD to zbiór danych obliczonych ze źródła i przechowywanych w pamięci RAM (o ile pozwala na to pojemność). Jedną z zalet RDD jest możliwość przechowywania wystarczającej ilości informacji o tym, jak została utworzona partycja RDD. W przypadku utraty partycji może więc ją przeliczyć.
Spark SQL umożliwia uruchamianie zapytań w językach SQL w celu ładowania i przekształcania danych. Język SQL pochodzi z relacyjnych baz danych , ale w Spark może służyć do przetwarzania dowolnych danych, niezależnie od ich oryginalnego formatu.
Spark Streaming oferuje strumieniowe przetwarzanie danych użytkownika. Wykorzystuje dane w czasie rzeczywistym DStream ( strumień dyskretny ) , tj. Ciągłą serię RDD.
Na przykład Twitter lub Amazon Kinesis.
Spark Graph X służy do przetwarzania informacji z wykresów . Graph X rozszerza RDD Sparka, wprowadzając elastyczny wykres rozproszonego zestawu danych , ukierunkowany multi-graf z właściwościami dołączonymi do węzłów i krawędzi.
Jest to biblioteka do uczenia maszynowego , pojawiająca się w wersji 1.2 platformy Spark, która zawiera wszystkie klasyczne algorytmy uczenia się i narzędzia, takie jak klasyfikacja , regresja , grupowanie , filtrowanie zespołowe i redukcja wymiarów, a także podstawowe prymitywy optymalizacji. Często mówimy o eksploracji danych poprzez uczenie się statystyczne.
Obecnie pojęcie dużych zbiorów danych jest bardzo rozpowszechnione. Spark jest skierowany do odbiorców poszukujących wydajnego przetwarzania danych, które są zbyt duże, aby można je było przechowywać na jednym komputerze. Każdy z zainteresowanych graczy szuka coraz większej responsywności na rynku, stąd zainteresowanie analizą w czasie rzeczywistym.
Sposób działania MapReduce może być wystarczający, jeśli potrzeby operacyjne i raportowe są w większości statyczne i można poczekać na zakończenie przetwarzania wsadowego. Jednak Spark przynosi wartość dodaną, wprowadzając Spark Streaming. Narzędzie to umożliwia np. Przetwarzanie danych przesyłanych przez czujniki w fabryce lub wymagających kolejnych operacji. Dzieje się tak w przypadku większości algorytmów uczenia maszynowego , które muszą wykonywać wiele operacji. Na przykład Spark nadaje się do kampanii marketingowych w czasie rzeczywistym, rekomendacji produktów online, a nawet do cyberbezpieczeństwa .
Spark zapewnia interfejsy programowania domyślnie , które pozwalają na stosowanie go z Scala , Java , Python oraz języków R .
Ponadto niezależny projekt EclairJS umożliwia pisanie programów Spark w JavaScript .