Владимир Озеров — Как работает Apache Iceberg на примере Trino
https://www.youtube.com/watch?v=hsCtWz8JDRc
или
https://vkvideo.ru/video-147464741_456239437
Сложность: 2/3 (Очень сложно, но очень понятно)
Кому будет интересно: Будущее (а может уже и настоящее) совремнных Data Patform - Iceberg и Trino. Слышали про Iceberg и Trino и хотите понять, как они работают? Тогда обязательно к просмотру.
---
✨ Краткий пересказ и выводы по докладу ✨
Владимир Озеров, руководитель компании Querify Labs, подробно разобрал, как работает Apache Iceberg, и показал его интеграцию с Trino.
---
🔍 Основные тезисы:
1️⃣ История и значение Iceberg:
- Iceberg был создан для решения проблем атомарных обновлений и консистентности данных в дата-лейках. Изначально разработан Netflix для работы с большими объемами данных.
2️⃣ Основные концепции Iceberg:
- Iceberg моделирует транзакции поверх таблиц в дата-лейках.
- Использует файлы данных и метаданные для обеспечения консистентности.
- Основан на журнале изменений, аналогично PostgreSQL и Kafka.
3️⃣ Метаданные и транзакции:
- Метаданные описывают файлы и их консистентные состояния.
- Iceberg поддерживает транзакции только в рамках одной таблицы. Поддержка транзакций между таблицами пока не реализована, но обсуждается.
4️⃣ Снапшоты и бранчи:
- Снапшоты организованы в линейные истории, называемые бранчами.
- Возможность создания дополнительных бранчей и их протегирования.
- Снапшоты описывают все файлы данных, необходимые для получения консистентного слепка.
5️⃣ Метаданные и их структура:
- Метаданные в Iceberg разбиты на четыре типа файлов:
- Metadata
- Manifest list (avro)
- Manifest (json)
- Статистики (Puffin)
6️⃣ Атомарная запись и публикация данных:
- Атомарная запись данных позволяет избежать проблем с консистенцией.
- Возможен атомарный апдейт, что устраняет проблемы с Eventual Consistency.
7️⃣ Каталоги и их реализация:
- Каталоги в Iceberg хранят информацию о схемах и таблицах. Самые популярные:
- HMS (Hive Metastore) — самый популярный вариант.
- REST-каталог рассматривается как будущее.
8️⃣ Работа с данными в Iceberg:
- Подходы к удалению записей: Copy-on-Write и Merge-on-Read.
- Merge-on-Read позволяет быстро читать данные, но замедляет запись.
9️⃣ Партишин-трансформ:
- Партишин-трансформ — это функция, которая принимает одну или несколько колонок и возвращает значение для ключа партии.
- В отличие от Hive, где каждая колонка позиционирования была реальной, в Iceberg это виртуальные таблицы.
🔟 Технические аспекты Iceberg:
- Iceberg — это библиотека, которая не запускает процессы, а предоставляет методы для работы с метаданными.
- Iceberg не поддерживает материализованные представления, но Trino позволяет строить их поверх Iceberg.
- Для работы с Iceberg необходимо реализовать два ключевых интерфейса:
- Интерфейс для общения с хранилищем.
- Интерфейс для атомарной публикации изменений метаданных (каталог).
---
💡 Выводы:
Iceberg — мощный инструмент для аналитики:
- Предоставляет транзакционность и консистентность данных в дата-лейках.
- Подходит для работы с большими объемами данных и сложными аналитическими запросами. Не подходит для OLTP
- Trino использует Iceberg для атомарной публикации изменений метаданных и статистики.
- Trino поддерживает чтение, запись, дата-скипинг, предикат пуш-дауны, партишинг и тайм-тревел.
📌 Итог:
Доклад Владимира Озерова — это глубокий dive в Apache Iceberg, который помогает понять, как этот инструмент обеспечивает транзакционность и консистентность данных в аналитических системах. Интеграция с Trino делает Iceberg еще более мощным инструментом для работы с большими данными.
Post #14
1.72K