18.6.2026
This commit is contained in:
232
BIG-DATA.md
Normal file
232
BIG-DATA.md
Normal file
@@ -0,0 +1,232 @@
|
||||
# 🗄️ Big Data — ekosystém, architektura, nástroje
|
||||
|
||||
## Přehled
|
||||
|
||||
Big Data ekosystém v roce 2026: "Hadoop je mrtvý, a přitom je všude." HDFS se zmenšil, MapReduce je fakticky mrtvý, Cloudera/Hortonworks éra skončila. Ale YARN žije, Hive Metastore se převlékl do Iceberg/Delta a lakehouse pattern (levné object storage + tabulkový formát + distribuovaný engine) je dědictví, které Hadoop zanechal.
|
||||
|
||||
Moderní Big Data stack má 8 vrstev:
|
||||
|
||||
1. **Storage** — HDFS, S3, GCS, ABFS, MinIO
|
||||
2. **Tabulkový formát** — Apache Iceberg, Delta Lake, Apache Hudi, Apache Paimon
|
||||
3. **Catalog** — Hive Metastore, Unity Catalog, Polaris, Nessie, AWS Glue
|
||||
4. **Dávkové zpracování** — Apache Spark, Trino-on-Spark, Dremio
|
||||
5. **Streamové zpracování** — Apache Flink, Spark Structured Streaming, Kafka Streams
|
||||
6. **Distribuované SQL** — Trino, Presto, StarRocks, ClickHouse
|
||||
7. **Transformace** — dbt, SQLMesh
|
||||
8. **Orchestrace** — Apache Airflow 3.0, Dagster, Prefect, Kestra
|
||||
|
||||
---
|
||||
|
||||
## Úložiště (Storage)
|
||||
|
||||
### HDFS (Hadoop Distributed File System)
|
||||
|
||||
| Vlastnost | Detail |
|
||||
|-----------|--------|
|
||||
| **Architektura** | Master/worker: NameNode (metadata) + DataNode (data) |
|
||||
| **Replikace** | Výchozí 3×, konfigurovatelná (rack-aware) |
|
||||
| **Block size** | Výchozí 128 MB (lze 64 MB – 256 MB) |
|
||||
| **Limity** | NameNode memory ~ 1 GB / 1 milion bloků; ~1000 DataNode v clusteru |
|
||||
| **Use case** | On-prem clustery, sekvenční čtení/zápis, velké soubory |
|
||||
| **Stav 2026** | Klesající podíl — většina migruje na object storage (S3, GCS, MinIO) |
|
||||
|
||||
HDFS je stále relevantní pro on-prem prostředí, kde object storage není dostupná, nebo pro specifické use case (YARN cluster, Spark shuffle). Pro nové projekty se doporučuje object storage.
|
||||
|
||||
### Object storage jako Data Lake
|
||||
|
||||
| Platforma | Služba | Use case |
|
||||
|-----------|--------|----------|
|
||||
| **AWS** | S3 | Hlavní data lake, Iceberg/Delta na S3 |
|
||||
| **Azure** | ADLS Gen2 / Blob | Data lake pro Azure ekosystém |
|
||||
| **GCP** | GCS | Data lake pro GCP (Dataproc, BigQuery) |
|
||||
| **On-prem** | MinIO | S3-kompatibilní object storage na vlastním HW |
|
||||
|
||||
### Kapacitní plánování HDFS
|
||||
|
||||
| Velikost dat | Konfigurace |
|
||||
|-------------|------------|
|
||||
| **< 100 TB** | 3–5 DataNode, 10 GbE, replication 3× |
|
||||
| **100 TB – 1 PB** | 5–20 DataNode, 25/100 GbE, rack-aware, NameNode HA |
|
||||
| **1 PB+** | 20+ DataNode, 100 GbE, Federation (více NameNode) |
|
||||
|
||||
---
|
||||
|
||||
## Tabulkové formáty (Open Table Formats)
|
||||
|
||||
Tabulkové formáty přináší ACID transakce, schema evolution a time travel do data lake objektového úložiště.
|
||||
|
||||
| Formát | Organizace | Engine kompatibilita | Streaming | Katalog |
|
||||
|--------|-----------|---------------------|-----------|---------|
|
||||
| **Apache Iceberg** | Apache Foundation | Spark, Flink, Trino, Dremio, Athena, Snowflake | Flink sink, snapshot-based | REST catalog, Polaris, Glue, Hive |
|
||||
| **Delta Lake** | Linux Foundation (Databricks) | Spark (native), Trino, Flink (limited), Athena | Spark Streaming, DLT | Unity Catalog (proprietary), Hive |
|
||||
| **Apache Hudi** | Apache Foundation | Spark, Flink, Trino (connector) | Built-in CDC, incremental | Hive, Glue (limited) |
|
||||
| **Apache Paimon** | Apache Foundation | Flink (native), Spark | LSM-tree, changelog mode | Hive, REST |
|
||||
|
||||
**Doporučení 2026:**
|
||||
- **Iceberg** — nejširší multi-engine podpora, vendor-neutral, otevřený katalog (Polaris)
|
||||
- **Delta Lake** — nejlepší pro Spark/Databricks ekosystém, UniForm pro cross-format čtení
|
||||
- **Hudi** — ztrácí momentum, jen pokud již v produkci
|
||||
- **Paimon** — emerging, Flink-native, LSM architektura
|
||||
|
||||
---
|
||||
|
||||
## Zpracování (Processing Engines)
|
||||
|
||||
### Apache Spark
|
||||
|
||||
Dominantní engine pro dávkové zpracování a unifying engine (batch + streaming + SQL + ML).
|
||||
|
||||
| Vlastnost | Detail |
|
||||
|-----------|--------|
|
||||
| **Verze 2026** | Spark 4.x (4.1.0), native Kubernetes support, Structured Streaming, Delta Lake integrace |
|
||||
| **API** | Scala, Java, Python (PySpark), SQL, R (SparkR) |
|
||||
| **Batch** | DataFrame/Dataset, RDD, SQL queries — 10–100× rychlejší než MapReduce |
|
||||
| **Streaming** | Structured Streaming (micro-batch), latence ~100 ms – 5 s |
|
||||
| **SQL** | Spark SQL, ANSI SQL, Hive兼容 |
|
||||
| **ML** | MLlib, SparkML, integrace s MLflow |
|
||||
| **Scheduler** | YARN, Kubernetes (production-ready od Spark 3.x), standalone |
|
||||
| **Fault tolerance** | RDD lineage, checkpointing |
|
||||
|
||||
**Kdy použít Spark:**
|
||||
- Dávkové ETL/ELT pipelines
|
||||
- Jednotný engine pro batch + streaming (team preference)
|
||||
- Machine learning pipelines (MLlib, SparkML)
|
||||
- SQL analytika na velkých datech
|
||||
|
||||
### Apache Flink
|
||||
|
||||
Nejvýkonnější engine pro true streaming (per-event zpracování).
|
||||
|
||||
| Vlastnost | Detail |
|
||||
|-----------|--------|
|
||||
| **Verze 2026** | Flink 2.x (streaming-first, batch jako speciální případ streamu) |
|
||||
| **API** | DataStream API, Table/SQL API, ProcessFunction (low-level) |
|
||||
| **Latence** | < 100 ms (true streaming, Chandy-Lamport checkpointing) |
|
||||
| **State management** | Managed state (ValueState, ListState, MapState), RocksDB backend |
|
||||
| **Event time** | Nativní, watermarky, out-of-order handling |
|
||||
| **Batch** | Batch jako bounded stream (stejný runtime) |
|
||||
| **Deployment** | YARN, Kubernetes, standalone |
|
||||
| **Ekonomika** | Vyšší paměťové nároky (managed state), nutnost pečlivého tuningu |
|
||||
|
||||
**Kdy použít Flink:**
|
||||
- Fraud detection, real-time bidding, IoT (< 100 ms latence)
|
||||
- Komplexní stateful stream processing
|
||||
- CDC pipelines
|
||||
- Event-driven architektury
|
||||
|
||||
### Trino (ex PrestoSQL)
|
||||
|
||||
Distribuovaný SQL query engine — federované dotazy napříč různými zdroji.
|
||||
|
||||
| Vlastnost | Detail |
|
||||
|-----------|--------|
|
||||
| **Architektura** | Coordinator + Worker (bez storage, bez scheduleru) |
|
||||
| **Konektory** | Iceberg, Delta, Hive, HDFS, S3, GCS, ADLS, PostgreSQL, MySQL, Kafka, Elasticsearch |
|
||||
| **Use case** | Interactive SQL, federované dotazy, lakehouse queries |
|
||||
| **Verze 2026** | Trino 470+, Iceberg native, Delta Lake connector |
|
||||
|
||||
---
|
||||
|
||||
## Srovnání Spark vs Flink vs Trino
|
||||
|
||||
| Kritérium | Spark | Flink | Trino |
|
||||
|-----------|-------|-------|-------|
|
||||
| **Primární use case** | Batch + unifying | True streaming | Interactive SQL |
|
||||
| **Latence streaming** | 100 ms – 5 s (micro-batch) | < 100 ms (true streaming) | N/A |
|
||||
| **Throughput** | Vysoký (batch optimalizace) | Vysoký (pipeline optimalizace) | Střední (ad-hoc) |
|
||||
| **State management** | State store (external) | Managed state (embedded) | N/A |
|
||||
| **SQL support** | Spark SQL | Flink SQL | ANSI SQL (nejširší) |
|
||||
| **ML/AI** | MLlib, SparkML | — | — |
|
||||
| **Kubernetes** | Native (production) | Native (production) | Native (production) |
|
||||
| **Křivka učení** | Střední | Vysoká | Nízká |
|
||||
| **Provozní náročnost** | Střední | Vysoká | Střední |
|
||||
|
||||
---
|
||||
|
||||
## Orchestrace
|
||||
|
||||
| Nástroj | Verze 2026 | Use case |
|
||||
|---------|-----------|----------|
|
||||
| **Apache Airflow** | 3.0+ (taskflow API, dynamic tasks, deferrable operators) | Univerzální orchestrace, největší ekosystém |
|
||||
| **Dagster** | 1.x (asset-oriented, software-defined assets) | Data pipelines, observabilita, asset lineage |
|
||||
| **Prefect** | 3.x (native async, workers, blocks) | Python-native, serverless workers |
|
||||
| **Kestra** | 1.x (YAML-native, declarative) | Event-driven orchestration |
|
||||
| **Apache NiFi** | 2.x (flow-based, visual) | Data ingestion, CDC, streaming |
|
||||
|
||||
---
|
||||
|
||||
## Lakehouse architektura
|
||||
|
||||
Lakehouse kombinuje flexibilitu data lake (object storage) s výkonem a governance data warehouse.
|
||||
|
||||
```
|
||||
┌──────────────────────────────────────────────────────┐
|
||||
│ Query Engines │
|
||||
│ Trino Spark SQL Flink SQL Dremio Athena │
|
||||
└─────────────────────────┬────────────────────────────┘
|
||||
│
|
||||
┌─────────────────────────▼────────────────────────────┐
|
||||
│ Table Format Layer │
|
||||
│ Apache Iceberg / Delta Lake / Hudi │
|
||||
│ (ACID, time travel, schema evolution) │
|
||||
└─────────────────────────┬────────────────────────────┘
|
||||
│
|
||||
┌─────────────────────────▼────────────────────────────┐
|
||||
│ Storage Layer │
|
||||
│ S3 / GCS / ADLS / MinIO / HDFS │
|
||||
│ (Parquet / ORC / Avro) │
|
||||
└──────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
Detailněji Iceberg viz [DATABASES.md — Apache Iceberg Lakehouse](DATABASES.md#apache-iceberg-lakehouse).
|
||||
|
||||
---
|
||||
|
||||
## Infrastruktura pro Big Data
|
||||
|
||||
### Cluster sizing
|
||||
|
||||
| Komponenta | Spark (batch) | Flink (streaming) | Trino (SQL) |
|
||||
|------------|--------------|-------------------|-------------|
|
||||
| **CPU** | 16–64 cores/node | 16–32 cores/node | 8–32 cores/node |
|
||||
| **RAM** | 64–256 GB/node | 64–256 GB/node (včetně managed state) | 64–256 GB/node |
|
||||
| **Storage** | HDFS / object storage | Object storage (checkpointy) | Žádná (stateless) |
|
||||
| **Network** | 25–100 GbE (shuffle-heavy) | 25–100 GbE (checkpointing) | 25–100 GbE |
|
||||
| **Disk** | NVMe (scratch, shuffle) | NVMe (RocksDB state backend) | — |
|
||||
| **Cluster velikost** | 5–200+ nodes | 3–100+ nodes | 5–50 nodes |
|
||||
|
||||
### Network considerations
|
||||
|
||||
- **Spark shuffle** — heavy network traffic mezi uzly; doporučeno 25–100 GbE, ideálně bez oversubscription
|
||||
- **Flink checkpointing** — periodický zápis stavu na object storage; vyžaduje stabilní latenci
|
||||
- **HDFS rack awareness** — optimalizuje replikaci napříč racky
|
||||
- **Data locality** — HDFS: čtení z lokálního disku; object storage: network-bound
|
||||
|
||||
### Kubernetes vs YARN
|
||||
|
||||
| Kritérium | YARN | Kubernetes |
|
||||
|-----------|------|-----------|
|
||||
| **Resource isolation** | Cgroups (YARN containers) | Cgroups + namespaces (pods) |
|
||||
| **Ecosystem fit** | Hadoop-native (HDFS, Hive, Spark) | Cloud-native, Spark, Flink, Trino |
|
||||
| **Operational complexity** | Nižší (jeden cluster manager) | Vyšší (vyžaduje K8s cluster) |
|
||||
| **Multi-tenant isolation** | YARN queues (Capacity/Fair Scheduler) | Namespaces, ResourceQuotas, LimitRanges |
|
||||
| **Stateful workloads** | Omezená | StatefulSets, PVC, Operators |
|
||||
| **2026 trend** | Legacy (klesající) | Standard pro nové projekty |
|
||||
|
||||
---
|
||||
|
||||
## Nasazení v cloudu
|
||||
|
||||
| Cloud | Dávkové zpracování | Streaming | SQL | Managed K8s |
|
||||
|-------|-------------------|-----------|-----|-------------|
|
||||
| **AWS** | EMR (Spark, Hive, Flink) | Kinesis, MSK (Kafka), EMR Flink | Athena (Trino), Redshift | EKS |
|
||||
| **Azure** | HDInsight (Spark, Hive), Synapse | Event Hubs, HDInsight Flink | Synapse SQL, Azure Data Explorer | AKS |
|
||||
| **GCP** | Dataproc (Spark, Flink, Hive, Trino) | Pub/Sub, Dataflow (Beam), Dataproc Flink | BigQuery | GKE |
|
||||
|
||||
---
|
||||
|
||||
## Zdroje
|
||||
|
||||
Odkazy, knihy a standardy: [sources/infrastructure/sources.md](sources/infrastructure/sources.md)
|
||||
|
||||
*Poslední revize: 2026-06-18*
|
||||
Reference in New Issue
Block a user