Архитектура Lakehouse: хранение, вычисления и управление данными
Добро пожаловать в главу, которая описывает фундаментальную архитектуру Lakehouse — концепции, которая объединяет лучшие стороны data lake и data warehouse: гибкость хранения неструктурированных и полуструктурированных данных, ACID-трансакции, управление схемами и эффективное выполнение аналитических и ML‑задач. Здесь мы разберём, какие слои формируют Lakehouse, какие технологические решения помогают их реализовать, приведём практические примеры (как open-source, так и российские решения), обсудим риски и ограничения внедрения, а также дадим практические советы по эксплуатации и управлению.
Lakehouse строится вокруг триады: хранение данных, вычисления и управление данными. В реальном мире эти слои не существуют отдельно друг от друга, они тесно взаимосвязаны и зависят от того, каким образом организованы данные, как они индексируются и как обеспечивается консистентность и безопасность. Основная идея Lakehouse заключается в том, чтобы:
- хранить все данные (структурированные, полуструктурированные, неструктурированные) в одном совместимом слое;
- обеспечивать эффективное вычисление как в пакетном, так и в потоковом режимах;
- управлять метаданными, качеством данных, версионированием и доступом через единый слой каталога и политик безопасности.
Здесь важны три уровня:
- Хранение и форматы данных (object storage, столбцовые форматы Parquet/ORC, управление метаданными);
- Вычисление и движки обработки данных (Spark, Flink, Trino/Presto, Hive/Impala и т. п.);
- Управление данными и метаданными (каталоги, схемы, качество данных, линия времени, управление доступом).
В контексте ML и подготовки признаков важно дополнительно рассмотреть особенности Feature Store — как offline-хранилище признаков для обучения моделей и как онлайн-слой для реального времени инференса.
Ниже мы подробно разберём теоретическую часть, затем перейдём к практическим примерам и техническим деталям, закончим обсуждением рисков и ограничений, а затем — FAQ.
Архитектура слоёв Lakehouse
Хранение данных (Storage Layer)
- Объектное хранилище: S3-совместимые хранилища (Amazon S3, MinIO, Yandex Object Storage и т. д.), локальные или гибридные решения. Хранение файлов в форматов Parquet/ORC обеспечивает эффективную компрессию и сжимаемость.
- Форматы и сжатие: Parquet и ORC часто применяются вместе с columnar encoding для ускорения аналитики. Parquet особенно популярен благодаря аудированию, совместной работе разных инструментов и поддержке эволюции схем.
- Метаданные и каталоги: эффективная работа с огромными наборами файлов требует метаданных. В Lakehouse ключевую роль играет слой каталога, который хранит информацию о таблицах, схемах, разделах и версиях.
Вычислительный слой (Compute Layer)
- Базовые движки: Apache Spark, Apache Flink, Trino/Presto, Apache Hive и т. д. Они позволяют выполнять пакетные и потоковые задачи, обрабатывать данные в формате Parquet/ORC и взаимодействовать с каталожным слоем.
- Взаимодействие с данными: движки должны поддерживать ACID‑операции на уровне таблиц Lakehouse (например, вставку, обновление, удаление и upsert), а также эффективное чтение больших датасетов.
- Реализация streaming и batch: потоковые задачи позволяют собирать и обновлять признаки в режиме реального времени, а пакетные — для обучающих наборов и ретро‑анализа.
Управление данными и метаданными (Data Governance Layer)
- Каталоги и схемы: централизованный каталог позволяет определять таблицы, схемы, политики доступа и версии. Это критично для совместной работы аналитиков и data scientists.
- Управление качеством и lineage: сбор данных о происхождении, трансформациях и качестве данных помогает предотвратить "слепые зоны" и упрощает аудит.
- Контракт на данные и ревизии: поддержка схемной эволюции, time travel, ограничение на несовместимые изменения, хранение версий данных.
ACID и транзакции в Lakehouse
Один из ключевых камней архитектуры Lakehouse — поддержка ACID‑транзакций на уровне больших аналитических таблиц. В традиционных data lakes такого обеспечения не было, и транзакции выполнялись на уровне отдельных файлов или частичных наборов. Современные подходы используют:
- Metadata‑managed transactions: изменения в таблицах регистрируются в метасервисе (например, Iceberg/Hudi/Delta Lake), который обеспечивает атомарность и последовательность коммитов.
- Snapshot и time travel: возможность откатиться к конкретной версии данных, что полезно при анализе ошибок, аудите и экспортах.
- Schema evolution: гибкое изменение схемы без разрушения существующих рабочих процессов, с явной поддержкой совместимости старых и новых данных.
Форматы данных и каталогизация
- Parquet/ORC: столбцовые форматы, которые хорошо подходят для аналитики и ML-магистралей.
- Таблица Lakehouse: таблица в Iceberg/Delta/Hudi имеет собственный каталог и метаданные, отделяющие физические файлы от логики доступа.
- Каталоги: Hive Metastore, Glue Catalog, Iceberg Catalog, DataHub, OpenMetadata — выбор зависит от стеков и политики организации.
Метаданные, качество и линейность данных
- Метаданные: хранение информации о источниках, трансформациях, полях, типах и ограничениях.
- Линейность (lineage): возможность прослеживать путь данных — от источника до целевой модели, что критично для тийинга и аудита.
- Качество: встраиваемые проверки, профилирование данных, тесты на корректность признаков, интеграция с инструментами вроде Great Expectations или Deequ.
Feature Store и совместная работа аналитиков и data scientists
- Offline и online store: offline store (история признаков) используется для обучения и ретроспективного анализа, online store — для реального времени инференса.
- Регистрация признаков и их версионирование: хранение описания признаков, зависимостей и параметров преобразований.
- Контракты и совместная работа: строгие контракты между командами сохраняют согласованность между источниками данных и целями экспериментов.
Управление безопасностью и соответствием
- Многоуровневый доступ: на уровне данных, таблиц, столбцов, операций по времени.
- Шифрование: как в покое, так и в передаче, с использованием KMS‑ключей.
- Соблюдение нормативов: аудит доступа, хранение журналов, контроль изменений и миграций.
Риски внедрения на теоретическом уровне
- Сложность архитектуры: требуется опыт в нескольких технологиях (хранение, вычисления, каталогизация).
- Латентности: online‑слой может потребовать особых решений по кэшированию и потоковой обработке.
- Управление изменениями: неправильная эволюция схем может привести к несовместимостям программ.
- Экономика хранения и вычислений: баланс между ценой хранения и скоростью вычислений.
Практические примеры
Пример 1 — Open‑source стек: Iceberg + Spark + Feast + DataHub
Цель: создать гибкую offline/online инфраструктуру для подготовки признаков и ML‑экспериментов с открытым стеком.
- Хранение: Iceberg в Parquet
- Вычисление: Apache Spark
- Каталог и метаданные: DataHub / OpenMetadata
- Feature Store: Feast
- Онлайн-слой: Redis или Cassandra для быстрых чарк-значений признаков
- Мониторинг: Prometheus/Grafana
Ключевые шаги: Создаём Iceberg‑таблицу для обучающих данных:
- Используем Spark SQL с поддержкой Iceberg Catalog
- Partitions: по годам и месяцам ORDER_DATE
Инжест данных: загрузка источников в Iceberg (S3-совместимый бакет).
Определение признаков в Feast:
- Определяем FeatureView, источники (Feast Source) и требуемые признаки
Экспозиция и использование признаков:
- Обучение: offline признаки загружаем как датасет для обучения
- Инференс: онлайн‑store (Redis) получает значения признаков в реальном времени
Управление и качество:
- DataHub/OpenMetadata обеспечивает каталог признаков, lineage и политики доступа
- Валидационные тесты на качество данных и схему
Пример кода (упрощённый, иллюстративный):
# Пример Spark SQL для создания Iceberg таблицы
spark.sql("""
CREATE TABLE iceberg_db.sales_raw (
id BIGINT,
order_date DATE,
customer_id STRING,
amount DOUBLE
)
USING ICEBERG
PARTITIONED BY (YEAR(order_date), MONTH(order_date))
""")
# Инжест данных в Iceberg
df = spark.read.format("parquet").load("s3://my-bucket/raw/sales/")
df.writeTo("iceberg_db.sales_raw").using("iceberg").TableProperty("write.format","parquet")
# Feast: определение признаков
from feast import FeatureStore, RepoConfig, FeatureView, Entity, FileSource
entity_customer = Entity(name="customer_id", join_keys=["customer_id"])
sales_source = FileSource(path="s3://my-bucket/features/sales/", event_timestamp_column="order_date")
feature_view = FeatureView(
name="customer_sales_features",
entities=["customer_id"],
ttl=None,
schema=[Field(name="total_spent_last_30d", dtype=ValueType.FLOAT)],
online=False,
batch_source=sales_source,
)
fs = FeatureStore(repo_path=".")
fs.apply([feature_view, entity_customer])
Комментарий:
- Здесь Iceberg обеспечивает единый хранение с версионированием и транзакциями.
- Feast управляет определениями признаков, их версионированием и загрузкой в offline store.
- Online‑store на Redis/Cassandra обеспечивает быстрый доступ к признакам в реальном времени.
Пример 2 — Российские решения и экосистема
Российские организации часто применяют сочетание: Open-Source Lakehouse слоёв и локальных решений в зоне хранения и анализа данных. Ключевые компоненты:
- ClickHouse: мощное аналитическое СУБД для онлайн‑аналитики (OLAP), часто применяется как отдельный слой для интерактивной аналитики и агрегаций над данными, хранящимися в объектном хранении. Хорошо интегрируется с PyArrow/Parquet форматом и может работать как часть общего Lakehouse‑потока.
- Яндекс.Облако: сервисы хранения и обработки данных, включая Object Storage, Dataproc / DataSphere‑платформы и интеграции с Spark/Flink.
- Инфраструктурные решения: локальные кластеры Spark/Flink, Kubernetes‑окружение для контейнеризации вычислительных задач, инструменты мониторинга (Prometheus/Grafana) и системы оркестрации (Airflow, Argo).
Одна из возможных архитектур:
- Хранение: Parquet‑файлы в Yandex Object Storage
- Каталог и внешняя метаинформация: локальный Iceberg Catalog или Glue/DataHub‑похожий слой
- Вычисления: Spark/Flink на кластере Kubernetes (или в Яндекс.Облаке)
- Онлайн‑слой: ClickHouse или Redis
- Управление признаками: Feast (или локальная реализация), интегрированная с ClickHouse для онлайн‑наборов
Пояснения по преимуществам:
- ClickHouse обеспечивает очень низкие задержки при агрегациях и вопросах с большим объёмом данных.
- Облачные сервисы и локальные решения позволяют адаптировать инфраструктуру под требования по юрисдикции и регуляциям.
- Комбинация offline/online store обеспечивает поддержку как ML‑обучения, так и онлайн‑инференса.
Пример конфигурации для российского контекста:
- Хранилище: Yandex Object Storage (S3‑совместимый API)
- Таблица Iceberg: размещается в Object Storage
- Online store: ClickHouse cluster для быстрых запросов
- Инструменты каталогизации: DataHub/OpenMetadata
- Обучение: Spark на Kubernetes с доступом к Iceberg таблицам и к ClickHouse для встраивания онлайн‑признаков
Этот подход позволяет сочетать гибкость и открытость с высокой локализацией и поддержкой российских технологий.
Практические советы по внедрению
- Начинайте с малого и постепенно расширяйте стек: создайте базовую Iceberg‑таблицу, интегрируйте базовый Feast‑поток и простую онлайн‑часть.
- Выбирайте соответствующий каталог (Iceberg Catalog, Hive Metastore, Glue) в зависимости от инфраструктуры и требуемой совместимости.
- Включайте этапы контроля качества данных и проверки схемы на каждом этапе pipelines.
- Планируйте миграции: переход на Lakehouse часто требует параллельного потребления старых и новых наборов данных в течение переходного периода.
- Обеспечьте безопасность и соответствие: реализуйте доступ на уровне таблиц, столбцов и операций, шифрование и аудит.
Архитектура и слои
Storage Layer:
- Объектное хранилище: S3‑совместимые решения, локальные объёмы, гибридные варианты.
- Форматы: Parquet/ORC, сжатие (snappy, zstd) и компрессия.
Compute Layer:
- Spark/Flink/Trino/Presto: выполнение запросов и трансформаций, пакетное и стриминговое вычисление.
- Реализация транзакций на уровне таблиц: поддержка upsert, delete и schema evolution.
Data Governance Layer:
- Catalog и метаданные: Iceberg/Hudi/Delta Catalog; внешние каталоги: DataHub, OpenMetadata.
- Data quality: Great Expectations, Deequ.
- Lineage: отслеживание источников, трансформаций, зависимостей.
Feature Store Layer:
- Offline store: Iceberg/Parquet; online store: Redis/Cassandra.
- Registry и версии признаков; контроль совместимости сигналов.
Форматы данных и транзакции
Parquet/ORC: поддержка столбцовой архитектуры, эффективная компрессия, оптимизация чтения.
Iceberg/Hudi/Delta: обеспечивают ACID‑транзакции и снимки. Ключевые механизмы:
- Snapshot‑таблицы с версионированием
- Паттерны обновления: MERGE/UPSERT
- Управление схемой и эволюцией поля
- Time travel: возможность вернуться к конкретной версии данных
Каталоги и управление метаданными
- Hive Metastore vs Iceberg Catalog: Hive Metastore часто применяется в старых стэках; Iceberg Catalog (Hadoop Catalog, Hadoop/HDFS, Hive Catalog, Glue Catalog) — современные и гибкие решения.
- DataHub / OpenMetadata: открытые инструменты для управления метаданными, lineage и документирования.
Безопасность и соответствие
- Аутентификация и авторизация: интеграция с IAM/LDAP, управление доступами на уровне таблиц, строк и столбцов.
- Шифрование: TLS для передачи, KMS‑ключи для шифрования на хранении.
- Аудит и соответствие: хранение журналов доступа, соблюдение корпоративных политик и регуляторных норм.
Управление признаками и ML‑операции
Feature Store:
- Регистрация признаков, определение зависимостей и версии
- Offline и Online‑уровни: offline — для обучения; online — для инференса
- Контракты: строгие контракты между источниками данных и моделями
Обеспечение согласованности: версионирование признаков и детальная документация
Эксперименты и реплики: поддержка репринтов и повторяемых экспериментов
Примеры технической реализации
Пример Iceberg таблицы с временем разделения и схемной эволюцией:
- Создание и запись
- Считывание и обновление схемы
Пример интеграции Feast с Iceberg:
- Определение источников и функций для датасетов признаков
- Регистрация признаков, сборка фичей и загрузка в оффлайн‑слой
Приведённые примеры иллюстрируют, как работать с данными и признаками в рамках Lakehouse, сохраняя единый поток данных и единый каталог.
Риски и ограничения внедрения
- Сложность и управляемость: на старте архитектура может быть сложной и потребовать целевых специалистов по Spark, Flink, Iceberg, Feast и управлению данными.
- Стоимость владения: хранение больших наборов данных и вычисления в реальном времени может быть дорогим, особенно если не оптимизировать разделение, партиционирование и кэширование.
- Производительность и латентности: онлайн‑слой требует минимальной задержки, что требует правильной настройки кэширования и быстрого доступа к онлайн‑хранилищу.
- Совместимость и миграции: эволюция схем и регрессионные риски — нужно предусмотреть тесты совместимости и версионирование.
- Риск локализации и регулятивные вопросы: в России и других регионах возможны требования относительно хранения данных внутри границ страны, аудит и соответствие законам.
- Риск качества данных и эксплуатации: без должного контроля и мониторинга данные могут содержать ошибки, пропуски, а признаки — быть неустойчивыми.
- Угрозы безопасности: возможность несанкционированного доступа к данным и признакам, особенно в онлайн‑слое.
- Зависимость от экосистемы: выбор конкретного набора инструментов может повлечь зависимость от конкретного поставщика или проекта.
Выводы
- Lakehouse объединяет гибкость data lake и управляемость data warehouse: единое место для хранения, вычислений и управления данными.
- Архитектура Lakehouse строится на трёх ключевых слоях: хранение, вычисления и управление данными. Взаимодействие между этими слоями обеспечивается через каталоги, метаданные и транзакции.
- В ML‑практике Lakehouse особенно полезен для подготовки признаков, повторяемых экспериментов и совместной работы аналитиков и data scientists: offline/online признаковый store, единый репозиторий данных, контроль качества и версионирование.
- Практические примеры — как open-source стек (Iceberg + Spark + Feast) и как российские решения (ClickHouse + Яндекс.Облако) — показывают, что можно строить мощные Lakehouse‑платформы с учётом локальных требований и инфраструктуры.
- Внедрение требует планирования, устойчивой архитектуры, эффективного управления цепочкой поставок данных, мониторинга и обеспечения безопасности.
FAQ (Вопрос–Ответ)
1) Что такое Lakehouse и чем он отличается от Data Lake и Data Warehouse?
- Lakehouse сочетает сильную стороны Data Lake (хранение больших объёмов неструктурированных данных, гибкость форматов) и Data Warehouse (ACID, консистентность, управляемость). В Lakehouse обеспечиваются транзакции на уровне таблиц, версия данных и эволюция схем, а также единый слой для анализа и ML‑практик.
2) Какие технологии чаще всего применяют в архитектуре Lakehouse?
- Объектное хранилище (S3‑совместимое, Yandex Object Storage), форматы Parquet/ORC, каталоги (Iceberg Catalog, Hive Metastore, Glue), вычислительные движки (Spark, Flink, Trino), и управляющие решения (Feast для feature store, DataHub/OpenMetadata для каталога метаданных).
3) Что такое Feature Store и зачем он нужен в Lakehouse?
- Feature Store — это централизованный репозиторий признаков, который обеспечивает единый онлайн и офлайн доступ к признакам, их версионирование, совместное использование и управление зависимостями трансформаций. Он упрощает повторяемость экспериментов и ускоряет продакшн ML‑платформ.
4) Какую роль играют ACID‑транзакции в Lakehouse?
- ACID‑транзакции обеспечивают корректность и консистентность изменений в больших таблицах, поддерживают upsert и delete, позволяют безопасно обновлять данные и осуществлять точное восстановление версий данных.
5) Какие риски существуют при внедрении Lakehouse?
- Сложность архитектуры и владение несколькими технологиями, стоимость инфраструктуры, латентности онлайн‑слоя, миграционные риски, требования к безопасности и соответствию, а также риск зависимости от конкретного стека технологий.
6) Какие примеры практических внедрений можно привести?
- Стек open‑source: Iceberg + Spark + Feast + DataHub/OpenMetadata; онлайн‑store на Redis/Cassandra; оффлайн‑store на Iceberg. Российский контекст: сочетание ClickHouse как OLAP‑слоя и Iceberg/объектного хранилища в Яндекс.Облаке, обеспечение локальности и доступности в рамках регуляторных требований.
7) Как стартовать внедрение Lakehouse в нашей организации?
- Начать с корректного определения бизнес‑слоя и ключевых кейсов: выбор единых источников, создание базовых Iceberg‑таблиц, настройка каталога и базы признаков с минимальным набором признаков, организация процесса тестирования и мониторинга, планирование масштабирования и миграций. Важно обеспечить руководство по данным, включить процессы контроля качества и документирования.
8) Какую роль играет Data Governance в Lakehouse?
- Governance обеспечивает управление каталогами, lineage, качеством данных, безопасностью и соответствием регуляторным нормам. Без надёжной governance‑платформы упадёт воспроизводимость экспериментов и надёжность использования признаков.
9) Какие российские решения или экосистемы можно считать частью Lakehouse‑архитектуры?
- Российские решения включают интеграцию с ClickHouse для OLAP‑аналитики, работу в Яндекс.Облаке (Object Storage, DataSphere/Dataproc‑подобные сервисы), а также использование открытых экосистем (Iceberg, Feast, DataHub) в сочетании с локальными кластерами и инструментами мониторинга.
10) Какие шаги предпринять в первом месяце проекта по Lakehouse?
- Определить набор источников данных и бизнес‑потребности.
- Развернуть базовую Iceberg‑таблицу и простой каталог метаданных.
- Настроить оффлайн‑поток признаков (Feast) и минимальный online‑слой.
- Внедрить базовый набор проверок качества данных и мониторинг.
- Подготовить план миграции и документацию по данным.
Если вы рассматриваете переход к архитектуре Lakehouse, мы поможем оценить текущую data-инфраструктуру, спроектировать целевую архитектуру и подготовить поэтапный план внедрения. Узнайте больше о Lakehouse.



