Iceberg vs Delta Lake vs Hudi¶
Тип материала: инженерное сравнение; выводы зависят от требований и условий эксплуатации. Схемы и примеры иллюстративны.
Область: Iceberg1.9.2 / Delta3.3.x; Hudi1.0.2. Численные latency/TPS/cost требуют измерений на сопоставимом workload с одинаковыми гарантиями.
Критерии выбора¶
| Критерий | Iceberg1.9.2 / Delta3.3.x | Hudi1.0.2 |
|---|---|---|
| Workload | Iceberg: multi-engine snapshots/evolution; Delta: Spark-centric batch/stream MERGE | Hudi: record-key upsert и incremental/table-service design |
| Consistency | Atomic table snapshots при корректном catalog/commit protocol; engine isolation отдельно | Timeline/concurrency/merger; snapshot и read-optimized различаются |
| Latency | File pruning/statistics/delete processing; engine implementation решает | Index lookup + base/log merge; query type влияет на freshness |
| Throughput | Small files, metadata commits и update rewrite/delete vectors | File groups, index, COW rewrite либо MOR compaction |
| Cost | Object bytes/requests, catalog, compute и maintenance | Те же статьи плюс table services/index; дешевизна не универсальна |
| Scalability | Compute distributed engines; format не server/sharding service | Writer parallelism и file layout; hot partitions/task skew |
| Operational complexity | Catalog/protocol/features, expire/VACUUM safety, reader compatibility | Timeline, locks, cleaner, compaction/clustering и query-mode compatibility |
flowchart LR
Requirements --> Engines[Required engines and versions]
Engines --> Protocol[Supported table protocol and features]
Protocol --> Writers[Commit and concurrency design]
Writers --> Maintenance[Cleanup compaction and restore]
Конкретные сценарии¶
Несколько аналитических engines и partition evolution → исследовать Iceberg support matrix. Existing Spark streaming/MERGE pipeline → Delta при совместимых storage protocol и readers. Frequent keyed corrections + incremental consumers → Hudi с явной COW/MOR и record merger policy.
Ограничения и отказы¶
Нет единого winner: сначала выписать required deletes/CDC/incremental semantics, engines, object backend и concurrent writers. Iceberg v2 delete support различается по reader; Delta features меняют protocol; Hudi MOR read-optimized может быть stale. Ни один формат не заменяет wallet OLTP.
Как принять и проверить решение¶
Зафиксировать query mix, data distribution/skew, payload, working set, retention, concurrency, authoritative boundary и допустимую stale-read policy. Проверять steady state и maintenance, lost ACK, node loss, replay и restore. Сопоставлять total cost при одинаковых durability/replication requirements. Не объявлять универсального победителя по одному среднему времени запроса.
Типичные ошибки проектирования¶
Сравнивать default eventual/cache path с durable transactional commit; игнорировать operations/recovery; переносить benchmark другого dataset; выбирать продукт до определения access pattern.
Вопросы на собеседовании¶
Можно ли использовать варианты вместе? Да, если роли, data contracts и способы reconciliation определены. Дополнительная projection добавляет lag, replay и ownership, поэтому её польза должна покрывать эту сложность.
Практические упражнения¶
Для одного сценария выше составьте ADR: invariant, выбранный вариант, отклонённая альтернатива, failure outcomes и план измерений. Не задавайте придуманные TPS/SLA; перечислите входные данные, необходимые для sizing.