Samouczek Apache Spark dla początkujących: Naucz się Apache Spark z przykładami

Opublikowany: 2020-03-26

Spis treści

Wstęp

Dane są wszędzie – od dzienników klientów małego startupu po arkusze finansowe ogromnej międzynarodowej firmy. Firmy wykorzystują te wygenerowane dane, aby zrozumieć, jak działa ich firma i gdzie mogą się poprawić. Peter Sondergaard, starszy wiceprezes Gartner Research, powiedział, że informacja to olej na miarę XXI wieku, a analitykę można uznać za silnik spalinowy.

Jednak wraz z rozwojem firm rosną ich klienci, interesariusze, partnerzy biznesowi i produkty. Tak więc ilość danych, które muszą obsłużyć, staje się ogromna.

Wszystkie te dane muszą zostać przeanalizowane, aby stworzyć lepsze produkty dla swoich klientów. Ale terabajtów danych generowanych na sekundę nie można obsłużyć za pomocą arkuszy Excela i dzienników. Ogromne zbiory danych mogą być obsługiwane przez narzędzia takie jak Apache Spark.

W szczegółach oprogramowania zagłębimy się we wstępie do Apache Spark .

Co to jest Apache Spark?

Apache Spark to platforma obliczeniowa klastrów typu open source . Jest to w zasadzie system przetwarzania danych, który służy do obsługi ogromnych obciążeń i zestawów danych. Może szybko przetwarzać duże zestawy danych, a także rozdzielać te zadania na wiele systemów w celu zmniejszenia obciążenia. Ma prosty interfejs API, który zmniejsza obciążenie programistów, gdy są przytłoczeni dwoma terminami – przetwarzaniem dużych zbiorów danych i przetwarzaniem rozproszonym!

Rozwój Apache Spark rozpoczął się jako projekt badawczy o otwartym kodzie źródłowym w AMPLab na Uniwersytecie Kalifornijskim w Berkeley przez Matei Zaharia , który jest uważany za założyciela Sparka. W 2010 roku, na licencji BSD, projekt był open-source. Później stał się projektem inkubowanym w ramach Apache Software Foundation w 2013 roku. Stał się jednym z najlepszych projektów firmy w 2014 roku.

W 2015 roku Spark miał ponad 1000 współautorów projektu. To sprawiło, że był to jeden z najbardziej aktywnych projektów w Apache Software Foundation, a także w świecie big data. Ponad 200 firm wspiera ten projekt od 2009 roku.

Ale po co to całe szaleństwo wokół Sparka?

Dzieje się tak, ponieważ Spark jest w stanie obsłużyć mnóstwo danych i przetwarzać je jednocześnie. Dane te mogą być dystrybuowane na tysiące podłączonych serwerów wirtualnych lub fizycznych. Posiada ogromny zestaw interfejsów API i bibliotek, które współpracują z kilkoma językami programowania, takimi jak Python, R, Scala i Java. Obsługuje strumieniowanie danych, skomplikowane zadania, takie jak przetwarzanie wykresów, a także uczenie maszynowe. Ponadto zmieniające grę funkcje Apache Spark sprawiają, że popyt na nie jest wysoki.

Obsługuje szeroką gamę baz danych, takich jak HDFS Hadoop, bazy danych Amazon S3 i NoSQL, takie jak MongoDB, Apache HBase, MapR Database i Apache Cassandra. Obsługuje również Apache Kafka i MapR Event Store.

Architektura Apache Spark

Po zapoznaniu się z wprowadzeniem Apache Spark, poznamy teraz jego strukturę. Dowiedz się więcej o architekturze Apache.

Jego architektura jest dobrze zdefiniowana i składa się z dwóch głównych elementów:

Odporne rozproszone zbiory danych (RDD)

Jest to kolekcja elementów danych przechowywanych w węzłach roboczych klastra Spark. Klaster to rozproszona kolekcja maszyn, na których można zainstalować Spark. RDD są nazywane odpornymi, ponieważ są w stanie naprawić dane w przypadku awarii. Nazywa się je rozproszonymi, ponieważ są rozłożone na wiele węzłów w klastrze.

Spark obsługuje dwa typy RDD:

  • Zestawy danych Hadoop utworzone z plików w systemie HDFS (Hadoop Distributed File System)
  • Zrównoleglone kolekcje oparte na kolekcjach Scala

RDD mogą być używane do dwóch rodzajów operacji, którymi są:

  • Transformacje – Te operacje służą do tworzenia RDD
  • Akcje — służą do instruowania Sparka, aby wykonał pewne obliczenia i zwrócił wynik do sterownika. Więcej o kierowcach dowiemy się w kolejnych działach

DAG (ukierunkowany wykres acykliczny)

Można to uznać za sekwencję działań na danych. Są kombinacją wierzchołków i krawędzi. Każdy wierzchołek reprezentuje RDD, a każda krawędź reprezentuje obliczenia, które należy wykonać na tym RDD. Jest to wykres, który zawiera wszystkie operacje zastosowane do RDD.

Jest to graf skierowany, ponieważ jeden węzeł jest połączony z drugim. Wykres jest acykliczny, ponieważ nie ma w nim pętli ani cyklu. Po wykonaniu transformacji nie może powrócić do swojej pierwotnej pozycji. Transformacja w Apache Spark to akcja, która przekształca stan partycji danych z A na B.

Jak więc działa ta architektura? Pozwól nam zobaczyć.

Architektura Apache Spark ma dwa podstawowe demony i menedżera klastra . Są to – demon master i worker . Demon to program wykonywany w tle. Klaster w Spark może mieć wielu niewolników, ale jednego demona głównego.

Wewnątrz węzła głównego znajduje się program sterownika, który uruchamia aplikację Spark. Interaktywna powłoka, której możesz użyć do uruchomienia kodu, działa jako program napędu. Wewnątrz programu sterownika tworzony jest kontekst Spark. Ten kontekst i program sterownika wykonują zadanie za pomocą menedżera klastra.

Zadanie jest następnie dystrybuowane w węźle roboczym po podzieleniu go na wiele zadań. Zadania są uruchamiane na dyskach RDD przez węzły procesu roboczego . Wynik jest zwracany do kontekstu Spark . Po zwiększeniu liczby pracowników zadania mogą zostać podzielone na wiele partycji i działać równolegle w wielu systemach. Zmniejszy to obciążenie pracą i skróci czas wykonania pracy.

Apache Spark: korzyści

Oto zalety korzystania z Apache Spark :

Prędkość

Podczas wykonywania zadań dane są najpierw przechowywane w RDD. Dzięki temu, że dane te są przechowywane w pamięci, są one szybko dostępne i zadanie zostanie wykonane szybciej. Oprócz buforowania w pamięci Spark ma również zoptymalizowane wykonywanie zapytań. Dzięki temu zapytania analityczne mogą działać szybciej. Można uzyskać bardzo dużą szybkość przetwarzania danych. Może być 100 razy szybszy niż Hadoop w przypadku przetwarzania danych na dużą skalę.

Obsługa wielu obciążeń

Apache Spark może obsługiwać wiele obciążeń jednocześnie. Mogą to być zapytania interaktywne, przetwarzanie wykresów, uczenie maszynowe i analityka w czasie rzeczywistym. Aplikacja Spark może z łatwością uwzględniać wiele obciążeń.

Łatwość użycia

Apache Spark ma łatwe w użyciu interfejsy API do obsługi dużych zestawów danych. Obejmuje to ponad 100 operatorów, których można używać do tworzenia aplikacji równoległych. Operatory te mogą przekształcać dane, a częściowo ustrukturyzowane dane można manipulować za pomocą interfejsów API ramek danych.

Wsparcie językowe

Spark jest ulubieńcem programistów, ponieważ obsługuje wiele języków programowania, takich jak Java, Python, Scala i R. Daje to wiele opcji tworzenia aplikacji. Interfejsy API są również bardzo przyjazne dla programistów, ponieważ pomagają im ukryć skomplikowaną technologię przetwarzania rozproszonego za operatorami wysokiego poziomu, co pomaga zmniejszyć ilość potrzebnego kodu.

Efektywność

Ocena z opóźnieniem jest przeprowadzana w Spark. Oznacza to, że wszystkie przekształcenia dokonywane za pośrednictwem RDDS mają charakter leniwy. Tak więc wyniki tych przekształceń nie są tworzone od razu, a nowy RDD jest tworzony z istniejącego. Użytkownik może zorganizować program Apache na kilka mniejszych operacji, co zwiększa łatwość zarządzania programami.

Ocena leniwa zwiększa szybkość działania systemu i jego wydajność.

Społeczność

Będąc jednym z największych projektów big data typu open source, pracuje nad nim ponad 200 programistów z różnych firm. W 2009 roku wspólnota powstała i od tego czasu stale się rozwija. Tak więc, jeśli napotkasz błąd techniczny, prawdopodobnie znajdziesz rozwiązanie online, opublikowane przez programistów.

Możesz również znaleźć wielu niezależnych lub pełnoetatowych programistów gotowych do pomocy w Twoim projekcie Spark.

Przesyłanie strumieniowe w czasie rzeczywistym

Spark słynie z przesyłania strumieniowego danych w czasie rzeczywistym . Jest to możliwe dzięki Spark Streaming, który jest rozszerzeniem podstawowego interfejsu Spark API. Pozwala to analitykom danych na przetwarzanie danych w czasie rzeczywistym z różnych źródeł, takich jak Amazon Kinesis i Kafka . Przetworzone dane mogą być następnie przesyłane do baz danych, systemów plików i pulpitów nawigacyjnych.

Proces jest wydajny w tym sensie, że Spark Streaming może szybko odzyskać dane po awariach danych. Zapewnia lepsze równoważenie obciążenia i efektywnie wykorzystuje zasoby.

Zastosowania Apache Spark

Po zapoznaniu się z Apache Spark i jego zaletami , dowiemy się więcej o jego różnych zastosowaniach:

Nauczanie maszynowe

Zdolność Apache Spark do przechowywania danych w pamięci i wielokrotnego wykonywania zapytań sprawia, że ​​jest to dobra opcja do uczenia algorytmów ML. Dzieje się tak, ponieważ wielokrotne uruchamianie podobnych zapytań skróci czas potrzebny na określenie najlepszego możliwego rozwiązania.

Biblioteka uczenia maszynowego Sparka (MLlib) może wykonywać zaawansowane operacje analityczne, takie jak analiza predykcyjna, klasyfikacja, analiza sentymentu, grupowanie i redukcja wymiarów.

Integracja danych

Dane generowane w różnych systemach w organizacji nie zawsze są czyste i uporządkowane. Spark jest bardzo wydajnym narzędziem do wykonywania operacji ETL na tych danych. Oznacza to, że wykonuje, wyodrębnia, przekształca i ładuje operacje w celu pobierania danych z różnych źródeł, czyszczenia i organizowania ich. Dane te są następnie ładowane do innego systemu w celu analizy.

Analiza interaktywna

Jest to proces, dzięki któremu użytkownicy mogą przeprowadzać analizę danych na żywo. Za pomocą funkcji Strumieniowanie strukturalne w Spark użytkownicy mogą uruchamiać interaktywne zapytania dotyczące danych na żywo. Możesz także uruchamiać interaktywne zapytania podczas sesji internetowej na żywo, co poprawi analitykę internetową. Algorytmy uczenia maszynowego można również zastosować do tych strumieni danych na żywo.

Obliczanie mgły

Wiemy, że IoT (Internet rzeczy) zajmuje się dużą ilością danych pochodzących z różnych urządzeń wyposażonych w czujniki. Tworzy to sieć połączonych ze sobą urządzeń i użytkowników. Jednak wraz z rozwojem sieci IoT pojawia się zapotrzebowanie na rozproszony system przetwarzania równoległego.

Tak więc przetwarzanie danych i decentralizacja przechowywania odbywa się za pomocą Fog Computing wraz z Spark . W tym celu Spark oferuje zaawansowane komponenty, takie jak Spark Streaming, GraphX ​​i MLlib. Dowiedz się więcej o zastosowaniach Apache Spark.

Wniosek

Dowiedzieliśmy się, że Apache Spark jest szybki, skuteczny i bogaty w funkcje. Dlatego firmy takie jak Huawei, Baidu, IBM, JP Morgan Chase, Lockheed Martin i Microsoft wykorzystują go do przyspieszenia swojego biznesu. Obecnie jest znany w różnych dziedzinach, takich jak handel detaliczny, biznes, usługi finansowe, zarządzanie opieką zdrowotną i produkcja.

W miarę jak świat staje się coraz bardziej zależny od danych, Apache Spark będzie w przyszłości nadal ważnym narzędziem do przetwarzania danych.

Jeśli chcesz dowiedzieć się więcej o Big Data, sprawdź nasz program PG Diploma in Software Development Specialization in Big Data, który jest przeznaczony dla pracujących profesjonalistów i zawiera ponad 7 studiów przypadków i projektów, obejmuje 14 języków programowania i narzędzi, praktyczne praktyczne warsztaty, ponad 400 godzin rygorystycznej pomocy w nauce i pośrednictwie pracy w najlepszych firmach.

Ucz się kursów rozwoju oprogramowania online z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

Poprowadź rewolucję technologiczną opartą na danych

400+ godzin nauki. 14 języków i narzędzi. Status absolwenta IIIT-B.
Zaawansowany program certyfikacji w Big Data z IIIT Bangalore