Ekosystém Big Data a role Hadoopu, Sparku a Kafky
Hadoop, Apache Spark a Apache Kafka patří mezi klíčové technologie moderní datové platformy. Hadoop poskytuje úložiště a dávkové zpracování ve velkém měřítku, Spark přináší paměťově orientované výpočty a sjednocený analytický engine pro dávky i proudy a Kafka slouží jako vysoce škálovatelná event-streaming platforma pro ingest, transport a zpracování událostí v reálném čase. Tyto technologie se typicky nasazují společně v architekturách Lambda nebo Kappa a doplňují se o datové formáty (Parquet, ORC), metadatové vrstvy (Hive Metastore, Iceberg, Delta, Hudi) a nástroje pro orchestrace a správu (Airflow, Oozie, Kubernetes).
Hadoop: HDFS, YARN a MapReduce
- HDFS (Hadoop Distributed File System): distribuované, replikované úložiště pro velké soubory optimalizované na sekvenční čtení/zápis. Data se dělí na bloky (typicky 128–256 MB) a replikují (faktor 2–3+) napříč uzly pro odolnost proti výpadku. Preferuje koncept data locality – výpočty běží u dat.
- YARN (Yet Another Resource Negotiator): plánovač zdrojů a běhové prostředí pro různé výpočetní frameworky (MapReduce, Spark, Tez, Flink). Odděluje správu clusteru od výpočetních modelů.
- MapReduce: dávkový paralelní model (fáze Map → Shuffle → Reduce), dobře škáluje, ale je diskově náročný (mezikroky na disk). Použití dnes spíše pro ETL, kde není prioritou latence.
- Hive + Tez: SQL vrstvy nad HDFS; Tez nahrazuje MapReduce DAG-em s menší režijní zátěží.
Apache Spark: paměťově orientovaný sjednocený engine
- Abstrakce: RDD (nízkoúrovňová, odolnost pomocí lineage), DataFrame/Dataset (sloupcové, typově bohaté API), které využívají optimalizátor Catalyst a fyzické optimalizace Tungsten (off-heap paměť, whole-stage codegen).
- Moduly: Spark SQL (ANSI SQL, JDBC/ODBC), MLlib (strojové učení), GraphX (grafové výpočty), Structured Streaming (mikrodávkové a kontinuální zpracování streamů s exactly-once sémantikou přes checkpointing a idempotentní sinks).
- Režimy nasazení: Standalone, YARN, Kubernetes. Úlohy lze spouštět také v cloudových spravovaných službách (např. Dataproc/EMR/Azure HDInsight) nebo jako plně spravované clustery.
- Datové formáty a katalóg: Parquet/ORC (sloupcové), Avro; metadatové vrstvy jako Apache Iceberg, Delta Lake nebo Apache Hudi přidávají ACID, time-travel, schema evolution a efektivní upsert/merge-on-read.
Apache Kafka: event streaming a log commitovaný na disk
- Architektura: brokers (uzly), topics (logy) dělené na partitions s replikací; klienti jsou producers a consumers. Konzumace probíhá v rámci consumer groups pro horizontální škálování.
- Odolnost a výkon: zápis sekvenčním I/O, page cache, replikace (ISR). Retention policy časová/velikostní/kompakce (log compaction) pro udržení poslední hodnoty klíče.
- Ekosystém: Kafka Connect (konektory pro DB, filesystémy, SaaS), Schema Registry (Avro/JSON/Protobuf s verzováním), Kafka Streams (embedded stream processing knihovna) a stream procesory (Spark Structured Streaming, Flink).
- Konfigurace doručování: acks=all, idempotentní producenti, transakce pro přesně-jednou (exactly-once) sémantiku v rámci end-to-end pipeline.
Typické architektury: Lambda a Kappa
- Lambda: paralelní batch (Spark/Hive nad HDFS/objektovým úložištěm) a speed vrstva (Kafka → Spark/Flink) s výslednou serving vrstvou (NoSQL, lakehouse tabulky). Výhoda: robustní korekce přes dávková přepočítání; nevýhoda: složitost dvojího kódu.
- Kappa: jeden stream-processing path (Kafka jako zdroj pravdy), reprocessing skrze topic replay. Nižší komplexita, vysoké nároky na navrženou idempotenci a schémata.
Integrace Hadoop × Spark × Kafka v praxi
- Ingest: Senzory/aplikace → Kafka (partitions podle klíče/tenantu); schémata v Registry a compatibility rules.
- Stream zpracování: Spark Structured Streaming čte z Kafky (exactly-once s využitím checkpoint a transakcí), agreguje a zapisuje do Delta/Iceberg tabulek.
- Batch zpracování: pravidelné joby (Spark/Hive) nad datovým jezerem pro těžké transformace, trénink modelů a historické přepočty.
- Servírování: BI přes SQL (Trino/Presto/Spark SQL), operativní API nad tabulkami, feature store pro ML.
Výkonové charakteristiky a škálování
- HDFS: škáluje lineárně přidáváním datových uzlů; propustnost roste se souběhem; počet souborů limitován metadaty (NameNode). V praxi se preferují méně, zato větší soubory.
- Spark: výkon je funkcí paměti a I/O. Zásadní je sloupcový formát + predicate pushdown, partition pruning, broadcast join u malých dimenzí, Adaptive Query Execution pro dynamické přenastavení plánů.
- Kafka: throughput závisí na počtu partition a disku (NVMe), síti a kompresi (lz4, zstd). Příliš mnoho malých partition zvyšuje overhead řadičů/consumerů.
Formáty a tabulkové vrstvy: Parquet/ORC, Iceberg, Delta, Hudi
- Parquet/ORC: sloupcové, komprese, statistiky, min/max, dictionary; ideální pro analytické workloady.
- Iceberg/Delta/Hudi: správa metadat, snapshoty, time travel, ACID pro lakehouse. Výběr dle potřeb: merge-on-read (rychlé upserty) vs. copy-on-write (rychlé čtení), podporované enginy a governance.
Bezpečnost a governance
- Autentizace: Kerberos (Hadoop, Kafka), OAuth/OIDC (moderní brány), mTLS. V Kafce SASL/SCRAM/SASL-GSSAPI.
- Autorizace: Ranger/Sentry pro jemnozrnná práva (tabulka/ sloupec/řádek), Kafka ACL. Maskování a row-level filters.
- Šifrování: TLS na drátu, šifrování v klidu (HDFS TDE, KMS, cloud KMS). Rotace klíčů a auditní logy.
- Data quality a lineage: Great Expectations/Deequ, OpenLineage/Marquez pro trasování datových toků.
Provoz a spolehlivost
- Monitorování: Prometheus/Grafana, JMX metriky (GC, executors, Kafka lag), SLA (time-to-insight, freshness).
- Odolnost: replikace (HDFS, Kafka), checkpointy (Spark), exactly-once patterny (idempotentní sinky, transakce).
- Orchestrace: Airflow/Dagster pro DAGy, správa závislostí, backfills a retry strategie s exponenciálním zpožděním.
- Kontejnerizace: nasazení Sparku a Kafky na Kubernetes (operátory), izolace zdrojů, autoscaling.
Porovnání technologií: kdy co použít
| Scénář | Preferovaná technologie | Odůvodnění |
|---|---|---|
| Trvalé úložiště velkých datasetů | HDFS / objektové úložiště + Parquet/ORC | Škálovatelnost, sloupcové čtení, nízké náklady |
| Interaktivní SQL a dávkové ETL | Spark SQL | Optimalizace (Catalyst/Tungsten), široká konektivita |
| Realtime ingest a event-driven integrace | Kafka (+ Connect/Schema Registry) | Vysoký throughput, retenční log, integrace |
| Streamové agregace a exactly-once | Spark Structured Streaming / Kafka Streams | Stateful operace, checkpointing, transakce |
| Upserty a ACID nad jezerem | Delta / Iceberg / Hudi | Tabulková vrstva s transakcemi a time-travel |
Návrhové vzory a anti-patterns
- Vzory: Event-carried state transfer (Kafka s kompakcí), Outbox + Debezium pro CDC, medallion (bronze/silver/gold) vrstva v jezeru, idempotentní sink se dedup klíčem.
- Anti-patterns: příliš mnoho malých souborů (small files problem), nekontrolované wide dependencies ve Sparku (OOM během shuffle), globální broadcast obřích tabulek, Kafka topic s tisíci prázdnými partition.
Optimalizace Spark úloh
- Particionování: zarovnání na klíče joinů; salting pro eliminaci hotspotů.
- Join strategie: broadcast hash join pro malé dimenze; sort-merge join pro velké tabulky s vhodným partitioningem.
- Adaptive Query Execution (AQE): dynamická změna velikostí shuffle partitions, skew join optimalizace.
- Cache/persist: selektivně; vyvarovat se cache všeho bez měření.
Best practices pro Kafku
- Particions a klíč: volit klíč, který rovnoměrně distribuuje zátěž; počet partition dimenzovat na plánovaný consumer parallelism.
- Konzistence: acks=all, idempotentní producenti, transakční zápisy pro atomické zápisy do více topiců.
- Schémata: povolit backward/forward kompatibilitu; schema registry jako jediný zdroj pravdy.
- Retence: kombinace čas/velikost a log compaction; hlídat storage a segmenty.
Governance, katalog a compliance
- Metadatový katalog: Atlas/Amundsen/DataHub – lineage, vlastnictví, klasifikace.
- Privacy: pseudonymizace/šifrování citlivých sloupců, data contracts pro eventy.
- Standardy: naming conventions pro topic/prefixy tabulek, verzování schémat a SLA kontrakty mezi týmy.
Migrace a modernizace
- Z MapReduce na Spark: převod pipeline na DataFrame API, zachování determinismu výpočtů, testy na vzorcích a reconciliation výsledků.
- Z monolitických ETL na event-driven: CDC → Kafka → stream + lakehouse tabulky, postupný přechod s duálním zápisem (dual-write) a read-after-write kontrolami.
- Cloud-native: oddělení výpočet/úložiště (Spark na objektovém store), autoscaling, spot instance s tolerancí preempcí.
Ukazatele úspěchu a měření
- Data platform KPI: time-to-data, freshness, spolehlivost pipeline (SLO), náklady/terabyte a náklady na dotaz, poměr developer throughput vs. incidenty.
- Kafka metriky: produkční/spotřebitelský lag, ISR stabilita, request latency, chybovost producenta/consumerů.
- Spark metriky: doby shuffle, spill na disk, využití paměti/CPU, poměr stage retries, skew.
Závěr: společná strategie pro škálovatelnou datovou platformu
Hadoop poskytuje robustní úložiště a dávkové zpracování, Spark sjednocuje analytiku nad dávkami i proudy s vysokým výkonem a Kafka umožňuje spolehlivý, škálovatelný event-streaming. Kombinací těchto technologií s moderní tabulkovou vrstvou (Iceberg/Delta/Hudi), kvalitním governance a bezpečností lze vybudovat otevřenou a odolnou lakehouse platformu, která podporuje operativní reporting, pokročilou analytiku i reálné real-time use-case. Klíčem je disciplinovaný datový design (schémata, kontrakty), inženýrské best practices (particionování, idempotence, testování) a průběžné měření výkonu i kvality dat.