5 technik optymalizacji iskry, o których powinien wiedzieć każdy analityk danych
Opublikowany: 2020-06-12Czy to mały startup, czy duża korporacja, dane są wszędzie. Dane te są zbierane z różnych źródeł, takich jak dzienniki klientów, rachunki biurowe, arkusze kosztów i bazy danych pracowników. Firmy gromadzą i analizują te porcje danych w celu określenia wzorców i trendów. Te wzorce pomagają im w podejmowaniu ważnych decyzji mających na celu usprawnienie biznesu.
Ale ta analiza danych i przetwarzanie liczb nie są możliwe tylko dzięki arkuszom Excela. W tym miejscu wkraczają technologie oprogramowania do przetwarzania danych. Jedną z najszybszych i powszechnie stosowanych struktur przetwarzania danych jest Apache Spark. Techniki optymalizacji Spark są używane do dostrajania jej wydajności, aby jak najlepiej ją wykorzystać.
Za chwilę poznamy techniki. Zajmijmy się podstawami tego frameworka oprogramowania.
Spis treści
Co to jest Apache Spark?
Apache Spark to światowej sławy platforma obliczeniowa klastrów typu open source, która służy do przetwarzania ogromnych zbiorów danych w firmach. Przetwarzanie tych ogromnych zbiorów danych i ich dystrybucja między wieloma systemami jest łatwe dzięki Apache Spark. Oferuje proste interfejsy API, które ułatwiają życie programistom i programistom.
Spark zapewnia natywne powiązania dla języków programowania, takich jak Python, R, Scala i Java. Obsługuje uczenie maszynowe, przetwarzanie wykresów i bazy danych SQL . Ze względu na te niesamowite korzyści, Spark jest używany w bankach, firmach technologicznych, organizacjach finansowych, departamentach telekomunikacyjnych i agencjach rządowych. Aby dowiedzieć się więcej o iskra Apache, zapoznaj się z naszymi kursami analizy danych na uznanych uniwersytetach.
Architektura Apache Spark
Architektura środowiska uruchomieniowego Apache Spark składa się z następujących komponentów:
Iskrownik lub proces główny
Przekształca to programy w zadania, a następnie planuje je dla wykonawców (procesów podrzędnych). Harmonogram zadań rozdziela te zadania do wykonawców.
Menedżer klastra
Menedżer klastra Spark odpowiada za uruchamianie wykonawców i sterowników. Planuje i przydziela zasoby na kilka hostów dla klastra.
Wykonawcy
Egzekutory, zwane również procesami podrzędnymi, to jednostki, w których wykonywane są zadania zadania. Po uruchomieniu działają do końca cyklu życia aplikacji Spark. Wykonywanie zadania Spark nie zatrzymuje się, jeśli wykonawca nie powiedzie się.
Odporne rozproszone zbiory danych (RDD)
Jest to kolekcja zestawów danych, które są niezmienne i są rozmieszczone w węzłach klastra Spark. Warto zauważyć, że klaster to zbiór systemów rozproszonych, w których można zainstalować Spark. RDD są podzielone na wiele partycji. I są nazywane odpornymi, ponieważ mogą naprawić problemy z danymi w przypadku awarii danych.
Typy RDD obsługiwane przez Spark to:
- Zestawy danych Hadoop utworzone z plików w rozproszonym systemie plików Hadoop
- Kolekcje zrównoleglone, które mogą być oparte na kolekcjach Scala
DAG (ukierunkowany wykres acykliczny)
Spark tworzy wykres, gdy tylko kod zostanie wprowadzony do konsoli Spark. Jeśli jakaś akcja (instrukcja wykonania operacji) zostanie wyzwolona, ten wykres jest przesyłany do DAGScheduler .
Ten wykres można traktować jako sekwencję działań związanych z danymi. DAG składa się z wierzchołków i krawędzi. Wierzchołki reprezentują RDD, a krawędzie reprezentują obliczenia, które należy wykonać na tym konkretnym RDD. Nazywa się to grafem skierowanym, ponieważ na grafie nie ma pętli ani cykli.
Techniki optymalizacji iskry
Techniki optymalizacji Spark służą do modyfikowania ustawień i właściwości Spark, aby zapewnić prawidłowe wykorzystanie zasobów i szybkie wykonywanie zadań. Wszystko to ostatecznie pomaga w efektywnym przetwarzaniu danych.
Najpopularniejsze techniki optymalizacji Sparka są wymienione poniżej:
1. Serializacja danych
W tym przypadku obiekt w pamięci jest konwertowany na inny format, który można zapisać w pliku lub przesłać przez sieć. Poprawia to wydajność aplikacji rozproszonych. Dwa sposoby serializacji danych to:
- Jawa serializacja — platforma ObjectOutputStream służy do serializacji obiektów. Java.io.Externalizable może służyć do kontrolowania wydajności serializacji. Ten proces zapewnia lekką trwałość.
- Serializacja Kyro — Spark używa biblioteki Kryo Serialization (v4) do serializacji obiektów, które są szybsze niż serializacja Java i są bardziej kompaktowym procesem. Aby poprawić wydajność, klasy muszą być zarejestrowane przy użyciu metody registerKryoClasses.
2. Buforowanie
Jest to wydajna technika, która jest używana, gdy dane są wymagane częściej. Cache() i persist() to metody używane w tej technice. Te metody są używane do przechowywania obliczeń RDD, DataSet i DataFrame. Ale cache() przechowuje je w pamięci, a persist() przechowuje je na poziomie pamięci zdefiniowanym przez użytkownika.

Metody te mogą pomóc w obniżeniu kosztów i zaoszczędzeniu czasu, ponieważ stosowane są powtarzane obliczenia.
Przeczytaj: Dataframe w Apache PySpark: kompleksowy samouczek
3. Dostrajanie struktury danych
Możemy zmniejszyć zużycie pamięci podczas korzystania ze Sparka, dostosowując niektóre funkcje Javy, które mogą zwiększyć obciążenie. Jest to możliwe na następujące sposoby:
- Używaj wyliczanych obiektów lub numerycznych identyfikatorów zamiast ciągów dla kluczy.
- Unikaj używania wielu obiektów i skomplikowanych struktur zagnieżdżonych.
- Ustaw flagę JVM na xx:+UseCompressedOops, jeśli rozmiar pamięci jest mniejszy niż 32 GB.
4. Optymalizacja zbierania śmieci
Aby zoptymalizować odśmiecacze pamięci, G1 i GC muszą być używane do uruchamiania aplikacji Spark. Kolektor G1 zarządza rosnącymi hałdami. Strojenie GC jest niezbędne zgodnie z generowanymi dziennikami, aby kontrolować nieoczekiwane zachowanie aplikacji. Ale zanim to nastąpi, musisz zmodyfikować i zoptymalizować logikę i kod programu.
G1GC pomaga skrócić czas wykonania zadań poprzez optymalizację czasów przerw między procesami.
5. Zarządzanie pamięcią
Pamięć używana do przechowywania obliczeń, takich jak łączenia, tasowanie, sortowanie i agregacje, nazywana jest pamięcią wykonania. Pamięć magazynowa służy do buforowania i obsługi danych przechowywanych w klastrach. Obie pamięci używają zunifikowanego regionu M.
Gdy pamięć wykonawcza nie jest używana, pamięć przechowywania może wykorzystać przestrzeń. Podobnie, gdy pamięć pamięci jest bezczynna, pamięć wykonania może wykorzystać przestrzeń. Jest to jedna z najskuteczniejszych technik optymalizacji Sparka .
Przeczytaj także: 6 zmieniających grę funkcji Apache Spark
Wniosek
Na podstawie różnych technik optymalizacji Spark możemy zrozumieć, w jaki sposób pomagają one w skróceniu czasu przetwarzania i szybszym przetwarzaniu danych. Deweloperzy i profesjonaliści stosują te techniki w zależności od aplikacji i ilości danych.
Jeśli chcesz dowiedzieć się więcej o optymalizacji iskier , nauce o danych, sprawdź program Executive PG w dziedzinie Data Science IIIT-B i upGrad, który jest stworzony dla pracujących profesjonalistów i oferuje ponad 10 studiów przypadków i projektów, praktyczne warsztaty praktyczne, mentoring z przemysłem eksperci, indywidualni z mentorami branżowymi, ponad 400 godzin nauki i pomocy w pracy z najlepszymi firmami.
Czym są techniki optymalizacji Spark?
Apache Spark ułatwia przedsiębiorstwom szybkie przetwarzanie danych i łatwe rozwiązywanie złożonych problemów z danymi. Oczywistym jest, że podczas tworzenia dowolnego programu bardzo ważne jest dbanie o jego wykonanie. Techniki optymalizacji Spark pomagają w obliczeniach danych w pamięci. Jedyną rzeczą, która może utrudnić te obliczenia, jest pamięć, procesor lub jakikolwiek inny zasób.
Każda technika optymalizacji iskier jest używana do innego celu i wykonuje określone czynności. Niektóre z powszechnie stosowanych technik optymalizacji iskier to:
1. Serializacja
2. Wybór API
3. Zaliczka zmienna
4. Buforuj i utrzymuj
5. Operacja ByKey
6. Wybór formatu pliku
7. Strojenie zbierania śmieci
8. Poziom równoległości
Kiedy nie powinieneś rozważać używania Sparka?
Apache Spark ma wiele przypadków użycia, ale istnieją pewne wyspecjalizowane potrzeby, w których do spełnienia tego celu potrzebne są inne silniki danych big data. W takich przypadkach zaleca się użycie innej technologii zamiast korzystania ze Sparka. Poniżej znajdują się przypadki użycia, w których nie powinieneś rozważać używania Sparka:
1. Niska moc obliczeniowa – Domyślne przetwarzanie na Apache Spark odbywa się w pamięci klastra. Jeśli twoje maszyny wirtualne lub klaster mają małą moc obliczeniową, powinieneś wybrać inne alternatywy, takie jak Apache Hadoop.
2. Pozyskiwanie danych w modelu publikuj-subskrybuj — w tym przypadku istnieje wiele źródeł, a także wiele miejsc docelowych, w których miliony danych są przenoszone w krótkim czasie. Tutaj nie powinieneś używać Sparka, a zamiast tego użyć Apache Kafka.
Czy Pandy są szybsze niż Apache Spark?
Porównując szybkość obliczeniową zarówno Pandas DataFrame, jak i Spark DataFrame, zauważysz, że wydajność Pandas DataFrame jest nieznacznie lepsza w przypadku małych zestawów danych. Z drugiej strony, jeśli rozmiar danych wzrośnie, okaże się, że Spark DataFrame jest wystarczająco wydajny, aby przewyższyć Pandas DataFrame. W związku z tym będzie to w dużej mierze zależeć od ilości danych.