Hadoop, Spark, Kafka

Hadoop, Spark, Kafka

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.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *