Dziękujemy za wysłanie zapytania! Jeden z członków naszego zespołu skontaktuje się z Państwem wkrótce.
Dziękujemy za wysłanie rezerwacji! Jeden z członków naszego zespołu skontaktuje się z Państwem wkrótce.
Czas trwania 21 godzin
Plan Szkolenia
Moduł 1: Podstawy Big Data i Sparka
- Przegląd ekosystemu Big Data i rola Sparka we współczesnych platformach danych
- Zrozumienie architektury Sparka: sterownik (driver), executorzy, menedżer klastra, leniwa ewaluacja, DAG i planowanie wykonywania
- Różnice między API RDD a DataFrame oraz kiedy stosować każdy z tych podejść
- Tworzenie i konfigurowanie SparkSession oraz zrozumienie podstaw konfiguracji aplikacji
Moduł 2: PySpark DataFrames
- Odczytywanie i zapisywanie danych ze źródeł i formatów korporacyjnych: CSV, JSON, Parquet i Delta
- Praca z PySpark DataFrames: transformacje, akcje, wyrażenia kolumn, filtrowanie, łączenia (joins) i agregacje
- Implementacja zaawansowanych operacji, takich jak funkcje okienkowe, obsługa znaczników czasu i praca z zagnieżdżonymi danymi
- Stosowanie kontroli jakości danych i tworzenie ponownie używalnego, łatwego w utrzymaniu kodu PySpark
Moduł 3: Podstawy Dockera i Kubernetesa dla użytkowników Sparka
- Zrozumienie związku między obrazami Dockera i podami Kubernetesa a procesami sterownika i executorów Sparka — perspektywa koncepcyjna dla użytkowników klastra, a nie administratorów
- Zrozumienie, co dzieje się, gdy zadanie Spark jest uruchamiane w Kubernetesie: harmonogramowanie podów, żądania i limity zasobów oraz jak ustawienia sesji mapują się na te elementy
- Zrozumienie tego, co kontrolujesz za pomocą parametrów sesji Spark, w odróżnieniu od tego, co kontroluje zespół platformowy przez provisioning klastra — i dlaczego ta granica ma znaczenie dla strojenia
- Ćwiczenie praktyczne: Inspekcja działającego zadania Spark-on-Kubernetes w klastrze sandbox i zidentyfikowanie podów sterownika i executorów
Moduł 4: Konfiguracja sesji Spark w Kubernetesie — Analiza pogłębiona
- Zrozumienie rozmiary liczby executorów: kompromis między pamięcią a liczbą rdzeni oraz jak o tym myśleć
- Alokacja pamięci dla sterownika i executorów, nadmiar pamięci (memory overhead) oraz jak te elementy przekładają się na zasoby podów
- Dynamiczna alokacja: jak zachowuje się w Kubernetesie, kiedy oszczędza zasoby, a kiedy nie
- Ćwiczenie praktyczne: Uruchomienie tego samego zadania w różnych konfiguracjach executorów i rdzeni oraz porównanie czasu wykonania i zużycia zasobów
Moduł 5: Zachowanie skalowania i optymalizacja kosztów
- Zrozumienie, jak dodawanie lub usuwanie węzłów zmienia zachowanie zadania, czas zakończenia i zużycie zasobów
- Porównanie wielu małych executorów z mniejszą liczbą dużych: kompromisy między wydajnością a kosztami
- Zachowanie shuffle i strojenie partycji shuffle, w tym szacowanie wpływu kosztowego na wybory konfiguracyjne
- Ćwiczenie praktyczne: Skalowanie klastra sandboxa z pięciu do dziesięciu węzłów i obserwacja wpływu na czas zakończenia zadania i zużycie zasobów
Moduł 6: Wydajne pobieranie danych i partycjonowanie
- Zrozumienie problemu małych plików: dlaczego źródła podzielone na wiele plików Parquet o rozmiarze 1–5 MB pogarszają wydajność i zniekształcają partycjonowanie
- Strategie repartycjonowania i konsolidacji (coalescing)
- Kontrola rozmiaru partycji przy odczycie i zapisie
- Wydajne zapisywanie Parquet, aby uniknąć ponownego powstania problemu małych plików w dalszym przetwarzaniu
- Ćwiczenie praktyczne: Załadowanie zbioru danych składającego się z wielu małych partycji Parquet, zastosowanie różnych strategii repartycjonowania i porównanie wydajności przed i po optymalizacji
Moduł 7: Zarządzanie pamięcią w Pandasie i diagnoza awarii
- Zrozumienie przyczyn błędów out-of-memory w Pandasie i rozpoznawanie ich objawów
- Stosowanie wzorców wydajnej pamięciowo konwersji między Sparkiem a Pandasem
- Unikanie nadmiernego zużycia pamięci przy zapisywaniu dużych zbiorów danych do CSV
- Stosowanie przetwarzania partiami (chunked processing) i optymalizacji typów danych (dtype) w środowiskach o ograniczonych zasobach
- Ćwiczenie praktyczne: Odtworzenie typowego scenariusza out-of-memory w Pandasie i rozwiązanie go za pomocą przetwarzania partiami i optymalizacji typów danych
Moduł 8: Polars jako narzędzie uzupełniające
- Pozycjonowanie Polarsa w stosunku do Pandasa: cechy wydajnościowe, leniwa ewaluacja i zachowanie pamięci
- Zrozumienie, gdzie Polars pasuje obok PySparka i Pandasa we współczesnych chmurowych stosach danych i mapach drogowych migracji, w tym w środowiskach AWS
- Ćwiczenie praktyczne: Przepisanie transformacji intensywnych w Pandasie do Polarsa i porównanie zużycia pamięci oraz prędkości przetwarzania
Moduł 9: Stosowanie optymalizacji w obciążeniach ETL i ML
- Stosowanie zasad konfiguracji, partycjonowania i zarządzania pamięcią w realistycznym potoku ETL
- Zrozumienie kwestii optymalizacji specyficznych dla obciążeń uczenia maszynowego działających w tym samym klastrze
- Stosowanie praktycznego przepływu pracy strojenia, aby systematycznie diagnozować problemy z kosztami i wydajnością
- Ćwiczenie praktyczne: Ukończenie mini-projektu end-to-end łączącego ładowanie danych, transformacje i prosty krok szkolenia modelu, z uczestnikami strojącymi konfigurację Sparka we własnym zakresie
Wymagania
Uczestnicy powinni posiadać:
- Praktyczne doświadczenie w programowaniu w języku Python, w tym znajomość funkcji, modułów i podstawowych koncepcji programowania obiektowo-zorientowanego.
- Podstawowe do średniego doświadczenie w pracy z Pandasem i przepływami przetwarzania danych tabelarycznych.
- Podstawową znajomość PySparka i Spark DataFrame, w tym odczytywanie danych, transformacje, akcje, łączenia (joins) i agregacje.
- Powszechną wiedzę na temat SQL i koncepcji przetwarzania danych, w tym filtrowanie, grupowanie i łączenie zestawów danych.
- Podstawową znajomość koncepcji Dockera i Kubernetesa, takich jak kontenery, obrazy i pody. Doświadczenie w administracji Kubernetesem nie jest wymagane.
- Podstawowe zrozumienie popularnych formatów danych, takich jak CSV, JSON i Parquet.
Uczestnikom nie jest wymagane, aby byli administratorami Kubernetesa ani specjalistami ds. infrastruktury. Kurs koncentruje się na tym, jak inżynierowie danych, deweloperzy i naukowcy danych mogą rozumieć i optymalizować swoje obciążenia Spark działające w Kubernetesie z perspektywy aplikacji i konfiguracji.
Grupa docelowa
Kurs jest przeznaczony dla profesjonalistów, którzy tworzą, utrzymują lub optymalizują obciążenia przetwarzania danych i uczenia maszynowego z użyciem Pythona i Sparka w środowiskach chmurowych lub konteneryzowanych.
Jest on szczególnie odpowiedni dla:
- Inżynierów danych pracujących z PySparkiem, rozproszonym przetwarzaniem danych i potokami ETL.
- Naukowców danych przetwarzających duże zestawy danych lub uruchamiających obciążenia uczenia maszynowego za pomocą Sparka, Pandasa lub Polarsa.
- Deweloperów Pythona pracujących z aplikacjami intensywnymi pod względem danych, dążących do poprawy wydajności pamięci i przetwarzania.
- Inżynierów uczenia maszynowego zarządzających przygotowywaniem danych i obciążeniami szkolenia modeli w współdzielonych środowiskach Kubernetes lub chmurowych.
- Inżynierów analitycznych pracujących z dużymi zbiorami danych i dążących do poprawy wydajności przetwarzania danych.
- Inżynierów DevOps, Platform i Cloud wspierających obciążenia Spark w Kubernetesie, którzy muszą rozumieć wpływ konfiguracji na poziomie aplikacji na zużycie zasobów i wydajność.
- Kierowników technicznych i Architektów rozwiązań zaangażowanych w projektowanie lub optymalizację nowoczesnych platform przetwarzania danych.
Opinie uczestników (1)
ankieta przed szkoleniem i zastosowanie jej wynikow.