Bądźmy w kontakcie
 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.

Liczba uczestników


Cena za uczestnika (netto)

Opinie uczestników (1)

Propozycje terminów

Powiązane Kategorie