Вместо Iceberg, Hudi и Delta Lake: хранение потоковых и пакетных таблиц с LakeSoul

LakeSoul, архитектура данных, обучение архитекторов Big Data примеры курсы обучение, LakeHouse DWH примеры курсы обучение, Школа Больших Данных Учебный центр Коммерсант

Сегодня рассмотрим новое унифицированное решение для хранения потоковых и пакетных таблиц, созданное на основе Apache Spark. Что такое Lakesoul, чем это лучше Apache Iceberg, Hudi и Deta Lake. Также разберем, в чем конкурентные преимущества этого табличного хранилища по сравнению с этими форматами открытых таблиц, включая поддержку upsert, управление метаданными и другие фичи, полезные для дата-инженера.

Архитектура LakeHouse и другие предпосылки появления нового табличного хранилища

Архитектура экосистемы больших данных постоянно развивается: появляются новые модели, например, LakeHouse, о чем мы писали здесь и здесь, есть яркая тенденция к объединению пакетной и потоковой парадигм обработки данных, а также стремительный уход в дешевые облачные хранилища. Общедоступные и частные облака обеспечивают абстракцию оборудования для вычислений и хранения, абстрагируя традиционные операции управления и обслуживания IaaS. При этом облачные вычисления и хранилища обеспечивают гибкие возможности, позволяя снизить затраты при одновременном улучшении использования ресурсов.

Ускорение темпов обработки информации приводит к тому, что хранилища на основе пакетной Hadoop-модели MapReduce не обеспечивают требования к минимальной задержке или ее отсутствию. Традиционная Lamda-архитектура не позволяет менять стратегии анализа данных «на лету», требуя повторных вычислений, а также сложна в реализации и эксплуатации. Поэтому вопрос создания эффективной системы хранилища данных с записью обновлений и анализом данных в реальном времени в недорогом облачном хранилище сегодня стал особенно актуальным.

Эту проблему стремится решить новая гибридная архитектура Data LakeHouse, которая сочетает преимущества озер и хранилищ данных, реализуя функции DWH на базе недорогого облачного хранилища в открытом формате. LakeHouse включает параллельное чтение и запись данных, механизмы управления данными, прямой доступ к исходным данным, разделение ресурсов хранения и вычислений. Также эта новая гибридная модель поддерживает открытые форматы хранения, структурированные и полуструктурированные данные, в т.ч. аудио и видео. Наконец, LakeHouse обеспечивает главное требование современного бизнеса – сквозную потоковую передачу и возможность работы с различными вычислительными движками: Spark Structured Streaming, Flink и пр., каждый из которых имеет свои особенности работы. Однако, с точки зрения технологической зрелости, LakeHouse намного проигрывает более зрелым подходам, таким как озеро данных (Data Lake) и традиционное DWH.

Таким образом, архитекторы Big Data платформ столкнулись с необходимостью объединить различные вычислительные движки и облачные хранилища с быстро меняющимися сервисами и правилами обработки данных. Для этого нужен набор идеальных платформ хранения, которые могут обеспечить высокую степень параллелизма данных, высокую пропускную способность чтения и записи, а также полную возможность управления облачным хранилищем. Эту проблему стремится решить новый унифицированный механизм хранения потоковых и пакетных таблиц под названием LakeSoul, о котором мы поговорим далее.

Что такое LakeSoul и при чем здесь Apache Spark с Cassandra

Одной из причин высокой популярности Apache Hive как основного инструмента стека SQL-on-Hadoop является наличие Metastore – хранилища метаданных, которое отвечает за виртуализацию коллекций данных в HDFS в виде таблиц. Главными конкурентами Hive Metastore считаются форматы открытых таблиц: Hudi, Delta Lake и Iceberg. Однако, они не реализуют все возможности Hive Metastore, поэтому не могут заменить это хранилище метаданных. Hudi и Delta Lake поддерживают изменчивость данных, Iceberg обеспечивает эффективность доступа к большим таблицам, а эволюцию схемы реализует Delta Lake. Но, к примеру, Hudi не предназначен для OLTP-сценариев и, несмотря на поддержку транзакций, не может заменить аналитическую In-Memory базу данных, хотя и поддерживает прием данных в режиме, близкому к реальному времени, с помощью механизма пакетирования. Подробнее об этом мы писали здесь.

Поэтому на практике именно Apache Hive чаще всего используется вместе с вычислительным движком Spark для запроса данных в Hadoop HDFS, играя роль вспомогательного слоя доступа к данным. Однако, как уже было отмечено выше, Hive реализует классическую пакетную Hadoop-парадигму MapReduce, а не сквозную потоковую передачу. Поэтому с учетом тенденций развития архитектуры данных возникает необходимость замены Apache Hive на потоковый инструмент для работы с неструктурированными данными с помощью SQL-запросов. Таким унифицированным решением с открытым исходным кодом может стать LakeSoul от команды DMetaSoul. LakeSoul представляет собой унифицированный механизм хранения потоковых и пакетных таблиц на базе Apache Spark, который поддерживает масштабируемое управление метаданными, ACID-транзакции, эффективную и гибкую операцию вставки-изменения (UPSERT) данных, эволюцию схемы, а также потоковую и пакетную унификацию.

UPSERT в LakeSoul реализуется на уровне строк и столбцов, а конкурентная запись выполняется с высокой скоростью и массовом сканированием данных в облачном хранилище. Архитектура облачных вычислений и разделения хранилища делает развертывание очень простым, поддерживая при этом огромные объемы данных с меньшими затратами.

LakeSoul специально оптимизирует добавочные обновления на уровне строк и столбцов, большое количество одновременных записей и чтение пакетного сканирования для данных поверх облачного хранилища Data Lake. LakeSoul поддерживает высокопроизводительную пропускную способность записи в upsert-сценариях для первичного ключа хешированного раздела через lSM-дерево. В частности, для AWS S3 эта пропускная способность может достигать 30 МБ/с на ядро. Высокооптимизированная реализация слияния при чтении также обеспечивает производительность чтения. LakeSoul управляет метаданными через Cassandra для достижения высокой масштабируемости метаданных. Во 2-ой версии LakeSoul взаимодействие с метаданными и базой данных полностью реализовано с использованием протокола PostgreSQL, т.к. Cassandra не поддерживает однотабличные многораздельные транзакции и управление кластером Cassandra более затратно, чем Postgres.

LakeSoul? LakeHouse, архитектура данных
Архитектура и принципы работы LakeSoul

LakeSoul на основе Apache Spark обладает следующими характеристиками:

  • эластичная структура с полным разделением вычислений и хранилища. Без необходимости в фиксированных узлах и дисках механизмы вычисления и хранения данных имеют собственную эластичную емкость. Облачное хранилище оптимизировано для обеспечения согласованности параллелизма и upsert-операций. С LakeSoul не нужно поддерживать фиксированные узлы для хранения данных, а стоимость облачного объектного хранилища составляет около 10% стоимости локального диска, что значительно снижает затраты на хранение и эксплуатацию Big Data системы.
  • эффективное и масштабируемое управление метаданными — LakeSoul использует внешнюю базу данных для управления метаданными, которая может эффективно обрабатывать изменения метаданных и поддерживать несколько операций конкурентной записи. Это решает проблемы медленного анализа метаданных после долгой работы в системах озера данных, которые используют файлы для хранения метаданных.
  • ACID-транзакции — механизм Undo and Redo гарантирует, что фиксация является транзакционной, и пользователи никогда не увидят несогласованные данные.
  • Многоуровневое партиционирование и эффективный upsert. LakeSoul поддерживает разделение данных по диапазонам и хэшам, а также upsert на уровне строк и столбцов. Данные upsert хранятся в виде дельта-файлов, что повышает эффективность и параллелизм записи, а оптимизированное сканирование слиянием обеспечивает эффективную производительность метода MergeOnRead.
  • Потоковая и пакетная унификация со Streaming Sink, что позволяет одновременно обрабатывать потоковые данные, заполнение исторических данных в пакетном режиме, выполнять интерактивные запросы и другие сценарии.
  • Эволюция схемы — пользователи могут добавлять новые поля в любое время и быстро заполнять новые поля историческими данными.

Таким образом, для практического применения LakeSoul отлично подходит в случаях, когда добавляемые данные надо эффективно записывать большими пакетами в режиме реального времени, а также выполнять одновременные обновления на уровне строк или столбцов. Другим примером сценария использования этого унифицированного решения является подробный запрос и обновление данных в большом временном диапазоне с огромным количеством исторических данных при сохранении низкой стоимости. Или запрос не является фиксированным, а потребление ресурсов сильно меняется, поэтому нужны гибкие и независимо масштабируемые вычислительные ресурсы. Наконец, LakeSoul на базе Apache Spark подойдет, если нужно много одновременных операций записи, а метаданные слишком велики для Delta Lake, чтобы соответствовать требованиям производительности или для обновления данных первичных ключей требуется высокая скорость записи. Читайте в нашей следующей статье о деталях реализации LakeSoul.

Узнайте больше про архитектуру и аналитику больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://dev.to/qazmkop/design-concept-of-a-best-opensource-project-about-big-data-and-data-lakehouse-24o2
  2. https://github.com/meta-soul/LakeSoul/wiki
  3. https://www.libhunt.com/compare-MetaSpore-vs-LakeSoul
Поиск по сайту