Poznaj platformę Spark
Platforma Spark jest aparatem przetwarzania danych, co oznacza, że umożliwia inżynierom danych efektywne wyodrębnianie, przekształcanie i analizowanie ogromnych zestawów danych w systemach rozproszonych. To, co odróżnia ją od siebie, to możliwość ujednolicenia różnych typów obciążeń danych w ramach jednej struktury. Platforma Spark nie wymaga oddzielnych systemów przesyłania strumieniowego w czasie rzeczywistym, przetwarzania wsadowego, zapytań SQL ani uczenia maszynowego. Wszystko można zrobić na platformie Spark przy użyciu spójnego zestawu interfejsów API.
Kolejną siłą jest łatwość użytkowania. Platforma Spark obsługuje wiele języków programowania, w tym Python, Java, Scala i R. Jeśli znasz już język Python, możesz użyć narzędzia PySpark, interfejsu języka Python dla platformy Spark, aby od razu rozpocząć analizowanie danych.
Być może najważniejsze jest to, że platforma Spark została skompilowana z myślą o skalowalności. Możesz rozpocząć eksperymentowanie na komputerze lokalnym, a następnie bez zmiany kodu uruchomić tę samą aplikację w klastrze setek lub tysięcy maszyn.
Ekosystem Spark
Podczas gdy ludzie często mówią o platformie Spark jako o pojedynczym bycie, w rzeczywistości jest to ekosystem bibliotek zbudowany na szczycie podstawowego silnika.
Platforma Spark Core stanowi podstawę do przetwarzania rozproszonego, w tym planowania zadań, zarządzania pamięcią i odzyskiwania błędów.
Usługa Spark SQL umożliwia pracę z danymi ustrukturyzowanymi przy użyciu języka, który większość analityków już zna: SQL. Integruje się również z zewnętrznymi źródłami danych, takimi jak Hive, Parquet i JSON.
Przesyłanie strumieniowe platformy Spark umożliwia przetwarzanie danych niemal w czasie rzeczywistym, co jest przydatne w przypadku aplikacji, takich jak wykrywanie oszustw lub monitorowanie dzienników systemu.
Biblioteka MLlib to biblioteka uczenia maszynowego platformy Spark. Zapewnia skalowalne implementacje algorytmów klasyfikacji, klastrowania, regresji i rekomendacji.
Program GraphX jest używany do obliczeń grafów, takich jak analizowanie sieci społecznościowych lub modelowanie relacji między jednostkami.
Razem te składniki sprawiają, że platforma Spark jest jednym rozwiązaniem dla większości problemów z danymi big data.
Jak działa platforma Spark
Możesz się zastanawiać: dlaczego chciałbym napisać program Spark w pierwszej kolejności? Odpowiedź to skala. Gdy zestaw danych jest zbyt duży, aby zmieścić się w pamięci na jednej maszynie lub gdy konieczne są obliczenia, które trzeba zakończyć znacznie szybciej niż tradycyjne narzędzia, takie jak Pandas czy Excel, mogą to zrobić, Spark wkracza do akcji. Platforma Spark umożliwia pisanie kodu, który wygląda bardzo podobnie do pracy z danymi lokalnymi, ale dystrybuuje je automatycznie na wielu maszynach w klastrze. Wynikiem jest możliwość analizowania gigabajtów, terabajtów, a nawet petabajtów danych bez ponownego zapisywania logiki za każdym razem, gdy zestaw danych rośnie.
Załóżmy, że twoja firma przechowuje dane strumienia kliknięć witryny internetowej w usłudze Azure Data Lake Storage. Chcesz zrozumieć zachowanie klientów, filtrując wszystkie kliknięcia z ostatnich 24 godzin, łącząc je z tabelą profilu użytkownika, a następnie obliczając pięć najczęściej odwiedzanych kategorii produktów.
Oto co się stanie, gdy zaimplementujesz to w usłudze Databricks:
Twój notatnik zawiera kod napisany w języku Python (PySpark), który jest uruchamiany w programie sterującym. Sterownik jest odpowiedzialny za przekształcenie poleceń wysokiego poziomu (takich jak filtrowanie wierszy lub grupowanie danych) w plan mniejszych zadań.
Menedżer klastra przypisuje te zadania do różnych funkcji wykonawczych. Każda funkcja wykonawcza to proces roboczy uruchomiony na maszynie w klastrze. Klastry Apache Spark to sieci połączonych serwerów, które są traktowane jako pojedynczy aparat obliczeniowy i obsługują wykonywanie poleceń wydanych z notatników. Jeden egzekutor może filtrować wczorajsze kliknięcia dla identyfikatorów użytkowników 1–100 000, inny egzekutor (na tym samym lub innym serwerze) dla identyfikatorów 100 001–200 000, i tak dalej.
Gdy wszystkie funkcje wykonawcze zakończą swoją część pracy, platforma Spark zbiera wyniki, łączy je i zwraca czystą ramkę danych pokazującą najważniejsze kategorie produktów.
Z perspektywy inżyniera danych, po prostu piszesz znajomy kod DataFrame w notesie Databricks. Platforma Spark zajmuje się dystrybucją danych, równoległymi obliczeniami i ponawianiem zadań w przypadku awarii klastra. Ten projekt sprawia, że Spark wydaje się być przystępny — niemal jakbyś korzystał z lokalnych narzędzi do pracy z danymi — ale pod spodem organizuje wysoce równoległe i odporne na awarie obliczenia na potencjalnie setkach komputerów.
Ocena leniwa i DAG
Jednym z najważniejszych wyborów projektowych platformy Spark jest ocena z opóźnieniem. W przeciwieństwie do narzędzi, takich jak Pandas, gdzie każda operacja jest uruchamiana natychmiast, platforma Spark nie wykonuje poleceń natychmiast po ich zapisie. Zamiast tego podczas stosowania przekształceń — takich jak filtrowanie wierszy, łączenie tabel lub wybieranie kolumn — platforma Spark po prostu rejestruje te operacje w planie. Nic nie jest jeszcze obliczane. Takie podejście umożliwia platformie Spark zapoznanie się z pełną sekwencją operacji przed podjęciem decyzji o najbardziej wydajnym sposobie ich wykonania.
W tle platforma Spark tworzy graf acykliczny (DAG) operacji. Każdy węzeł na grafie reprezentuje zestaw danych, a każda krawędź reprezentuje transformację zastosowaną do tego zestawu danych. Ponieważ graf jest acykliczny, przepływa w jednym kierunku — od nieprzetworzonych danych wejściowych do końcowego wyniku — bez zawracania na siebie. Optymalizator platformy Spark analizuje tę grupę DAG, aby połączyć kroki, zminimalizować przenoszenie danych i określić najlepszą strategię wykonywania w klastrze.
Wykonanie rozpoczyna się tylko po wykonaniu akcji, takiej jak zbieranie wyników do sterownika, zapisywanie danych w magazynie lub zliczanie wierszy. W tym momencie platforma Spark przesyła zoptymalizowany graf DAG jako serię zadań do zarządcy klastra, który dystrybuuje je między egzekutorami. Ten projekt pomaga platformie Spark osiągnąć wysoką wydajność: pozwala uniknąć niepotrzebnych obliczeń, zmniejsza mieszania danych między węzłami i zapewnia, że zasoby klastra są używane tak wydajnie, jak to możliwe.
Rzeczywiste przypadki użycia
Organizacje w wielu branżach używają platformy Spark zawsze, gdy muszą przetwarzać i analizować duże lub szybko poruszające się zestawy danych. Na przykład usługa przesyłania strumieniowego wideo może użyć platformy Spark do utworzenia aparatu rekomendacji, który sugeruje nową zawartość na podstawie historii wyświetlania. Instytucja finansowa może polegać na usłudze Spark Streaming w celu monitorowania transakcji w czasie rzeczywistym i flagowania podejrzanych działań. W sektorze opieki zdrowotnej naukowcy mogą używać platformy Spark do analizowania danych genetycznych na dużą skalę w celu identyfikowania wzorców związanych z chorobami. Nawet w bardziej tradycyjnych ustawieniach biznesowych platforma Spark często odgrywa rolę w przygotowywaniu i przekształcaniu pierwotnych danych operacyjnych, dzięki czemu może być używana na potrzeby pulpitów nawigacyjnych i raportowania.
Inne typowe aplikacje obejmują analizowanie dużych ilości dzienników serwera internetowego, zasilanie pulpitów nawigacyjnych w czasie rzeczywistym dla urządzeń Internetu rzeczy (IoT), trenowanie modeli uczenia maszynowego na bardzo dużych zestawach danych oraz tworzenie potoków ETL , które wyodrębniają, czyszczą i łączą nieprzetworzone dane z wielu źródeł.
Opcje zgodności i wdrażania
Jedną z zalet platformy Spark jest to, że nie blokuje cię w jednej infrastrukturze. Zamiast tego jest przeznaczony do uruchamiania na różnych systemach rozproszonych, co zapewnia elastyczność w sposobie i miejscu wdrażania. Na najprostszym poziomie platforma Spark może działać lokalnie na własnym komputerze, co ułatwia eksperymentowanie z małymi zestawami danych lub poznawanie podstaw bez konfigurowania klastra. Gdy potrzebujesz większej mocy, możesz skalować w poziomie, uruchamiając platformę Spark w autonomicznym klastrze maszyn lub integrując ją z menedżerami zasobów, takimi jak Hadoop YARN lub Apache Mesos, które obsługują planowanie i alokację zasobów.
W chmurze platforma Spark jest powszechnie obsługiwana przez dostawców. Na przykład usługi, takie jak Azure Databricks, Azure Synapse Analytics i Microsoft Fabric, ułatwiają uruchamianie klastrów Spark bez obaw o szczegóły konfiguracji klastra i zarządzania nimi. Platforma Spark jest również coraz częściej wdrażana na platformie Kubernetes, co umożliwia organizacjom konteneryzowanie aplikacji Spark i uruchamianie ich w nowoczesnych środowiskach natywnych dla chmury. Ta elastyczność oznacza, że wraz z rozwojem potrzeb — od programowania lokalnego do klastrów lokalnych po wdrożenia w chmurze na dużą skalę — możesz nadal używać tych samych aplikacji Platformy Spark bez ponownego zapisywania ich na innej platformie.