Uživatelské nástroje

Nástroje pro tento web


it:sw:apache_spark

Apache Spark: Zpracování v paměti

Apache Spark je open-source engine pro paralelní zpracování dat v reálném čase i v dávkách. Jeho hlavní devizou je schopnost udržovat data v operační paměti (In-memory computing), což dramaticky zrychluje opakované dotazy a algoritmy strojového učení.

1. Architektura Apache Spark

Spark využívá architekturu typu Master-Worker. Centrálním mozkem je Driver, který rozděluje úlohy mezi jednotlivé Executory běžící na pracovních uzlech (Worker Nodes).

  • Driver Program: Hlavní proces, který sestavuje logický plán výpočtu (tzv. DAG).
  • Cluster Manager: Správce zdrojů (např. Kubernetes, YARN nebo vestavěný Standalone manager), který přiděluje paměť a procesory.
  • Executors: Procesy na jednotlivých serverech, které provádějí samotné výpočty a ukládají data v RAM.

2. Klíčové koncepty a datové struktury

Spark se v průběhu let vyvíjel od nízkoúrovňových struktur k vysoce optimalizovaným rozhraním:

  • RDD (Resilient Distributed Dataset): Původní stavební kámen. Jde o kolekci objektů rozdělenou napříč clusterem, která je odolná proti chybám (při pádu uzlu se dokáže sama dopočítat).
  • DataFrame: Podobně jako v Pandas nebo SQL, data jsou organizována do pojmenovaných sloupců. Tento formát umožňuje Sparku provádět optimalizace pomocí enginu Catalyst.
  • Lazy Evaluation: Spark nezačne počítat hned. Pouze si zapisuje seznam operací (transformací), které má provést. Skutečný výpočet se spustí až ve chvíli, kdy klient vyžádá výsledek (tzv. Action).

3. Ekosystém Sparku (Knihovny)

Spark je „švýcarský nůž“ pro data, protože v jednom balíku kombinuje různé typy analýz:

Komponenta Účel
Spark SQL Práce se strukturovanými daty pomocí standardního SQL dotazování.
Spark Streaming Zpracování dat v reálném čase (např. z Kafky).
MLlib Škálovatelná knihovna pro algoritmy strojového učení.
GraphX Analýza grafů a sociálních vazeb (např. hledání komunit).

4. Proč zvolit Spark místo Hadoopu?

Vlastnost Hadoop MapReduce Apache Spark
Rychlost Pomalejší (častý zápis na disk) Až 100x rychlejší (In-memory)
Náročnost Nižší nároky na RAM Vysoké nároky na operační paměť
Flexibilita Pouze dávkové zpracování Dávky, streaming i interaktivní dotazy
Programování Komplexní Java kód Snadné API v Pythonu, Scale, Javě nebo R

5. Použití v praxi

  • ETL procesy: Čištění a transformace terabytů surových dat z Data Lake do databází.
  • Prediktivní analýza: Trénování modelů na obrovských datasetech, které se nevejdou na jeden počítač.
  • Analýza logů: Vyhledávání bezpečnostních hrozeb v reálném čase analýzou miliard záznamů ze serverů.

Související články:

Tagy: it big-data spark analytics data-science in-memory parallel-computing

it/sw/apache_spark.txt · Poslední úprava: autor: admin