Озеро данных: Суть и эволюция
Озеро данных (Data Lake) — это система хранения и обработки данных, которая отличается от традиционных хранилищ данных тем, что позволяет хранить огромные объемы данных в различных форматах, включая структурированные, полуструктурированные и неструктурированные данные. В отличие от хранилища данных, которое использует стандартизированные схемы для организации данных, озеро данных предоставляет большую гибкость в обработке и хранении информации.
Изначально озера данных использовали Hadoop — открытая распределенная вычислительная платформа и компонент файловой системы HDFS, предназначенные для хранения и обработки больших объемов данных. Эти системы позволяли работать с огромными наборами структурированных и неструктурированных данных на кластерах недорогих компьютеров. Для аналитики в Hadoop использовался MapReduce — подход, при котором задачи разделялись на множество параллельных вычислений. Однако создание задач MapReduce было сложным, что привело к появлению Hive — системы, преобразующей SQL-запросы в задачи MapReduce.
С течением времени, благодаря развитию облачных технологий, хранилища данных на основе Hadoop постепенно уступили место облачным объектным хранилищам, таким как Amazon S3, Minio, Azure Blob Storage. Эти решения стали популярными из-за их дешевизны и удобства. Вместо MapReduce были внедрены более гибкие и быстрые вычислительные движки, такие как Apache Spark, Presto, и Dremio. Однако формат таблиц Hive остался стандартом для распознавания файлов как таблиц для аналитики.
Ключевые особенности озера данных
Одним из важнейших отличий озера данных от традиционного хранилища данных является декуплирование (decoupling) компонентов хранения и вычислений. В озере данных нет компонента, который бы выполнял все функции движка хранения данных. Вместо этого вычислительный движок, такой как Apache Spark или Presto, решает, как записывать и обрабатывать данные, которые обычно не оптимизируются и не совершенствуются.
Преимущества озера данных
- Низкая стоимость: Хранение данных в озере данных и выполнение запросов обходятся дешевле, чем в традиционных хранилищах данных. Это связано с использованием дешевых облачных хранилищ и отсутствии необходимости в жестких схемах данных.
- Открытые форматы хранения: Озера данных могут работать с любыми форматами файлов, что дает большую гибкость при работе с различными типами данных. Это позволяет хранить как структурированные, так и неструктурированные данные, включая журналы, данные сенсоров, вложения электронной почты и многое другое.
- Обработка неструктурированных данных: Озеро данных идеально подходит для работы с неструктурированными данными. В отличие от хранилища данных, где необходима строгая структура данных, озеро может обрабатывать такие типы данных, как текстовые файлы, изображения, видео и данные с сенсоров.
Недостатки озера данных
- Производительность: Одним из основных недостатков озера данных является отсутствие встроенных оптимизаций, таких как индексы и гарантии ACID (атомарность, согласованность, изолированность, долговечность). Это затрудняет достижение производительности, сопоставимой с хранилищем данных, и требует значительных усилий для настройки и оптимизации компонентов.
- Сложная конфигурация: Озера данных требуют значительных инженерных усилий для настройки, оптимизации и обеспечения их эффективной работы. Без должной настройки компоненты могут работать с низкой производительностью и требовать дополнительных ресурсов.
- Отсутствие гарантий ACID: В отличие от реляционных баз данных, которые обеспечивают строгие транзакционные гарантии, озера данных не предоставляют таких механизмов, что усложняет задачу обеспечения целостности данных при выполнении сложных операций.
Хранилище данных или озеро данных?
Озеро данных хорошо подходит для хранения как структурированных, так и неструктурированных данных. Однако для задач, требующих высокой производительности и строгих гарантий целостности данных, часто требуется копирование данных в хранилище данных. Это приводит к дополнительным затратам и сложности в управлении данными, так как необходимо поддерживать несколько копий данных.
Для выполнения запросов на озере данных используются различные вычислительные движки, такие как Dremio, Presto/Trino, Apache Spark и другие. Однако они сталкиваются с трудностями при обновлении данных, так как формат таблиц Hive ограничивает гибкость в обработке информации.
Появление архитектуры Data Lakehouse
Проблемы озера данных и хранилища данных привели к появлению новой архитектуры, которая сочетает лучшие черты обоих решений — Data Lakehouse. Эта архитектура позволяет использовать преимущества озера данных, такие как гибкость и низкая стоимость, в сочетании с возможностями хранилища данных, такими как высокая производительность и транзакционная целостность.
Как я впервые познакомился с Lakehouse
В 2021 году, работая в Amazon Alexa, я столкнулся с необходимостью работы с большими данными. В нашей инфраструктуре использовался Redshift (кластер хранилища данных на 128 узлов), который был единственным вариантом для выполнения BI-запросов. Однако подключение к озеру данных через такие системы, как Athena, Hive и Spark, было не таким удобным из-за объема данных и особенностей бизнес-анализа.
В нашей компании также использовалось озеро данных на S3 и EMR (управляемая платформа Hadoop). Проблем с производительностью хранения данных не возникало, однако проблемы начались при интеграции с BI-системами, что вынуждало выгружать данные из озера в хранилище и обратно для использования в ML-задачах.
В это время вступил в силу закон о защите данных (GDPR), что создало дополнительные сложности для работы с озером данных, поскольку в озере просто хранится много файлов, а не структурированных таблиц, что затрудняло выполнение операций удаления.
Именно в этот момент мы начали рассматривать решения типа Lakehouse и внедрять технологии, такие как Delta Lake для Apache Spark. На тот момент Delta Lake был наиболее популярным форматом таблиц, но теперь, по мере развития технологий, актуальной стала поддержка Iceberg.
В Databricks по-прежнему используется Delta Lake по умолчанию, но интеграция с новыми решениями, такими как Iceberg, продолжает развиваться.
Озеро данных предоставляет множество преимуществ, таких как гибкость, масштабируемость и низкая стоимость хранения, но также имеет свои недостатки, включая проблемы с производительностью и отсутствие гарантий ACID. Новая архитектура Data Lakehouse пытается объединить преимущества обеих технологий, минимизируя их недостатки.




