Кластеры Hive Metastore
Примечание
Функциональность находится на стадии Preview.
В сервисе Yandex MetaData Hub вы можете создавать кластеры Hive Metastore.
Hive Metastore
- Предоставляет клиентским приложениям информацию о том, где брать данные для обработки и как их интерпретировать.
- Сохраняет метаданные таблиц между запусками вычислительных кластеров с коротким временем жизни.
- Делит пространство данных между одновременно работающими кластерами.
- Связывает разнородные ETL-системы и инструменты для работы с общими данными и упрощает их развертывание.
- Обеспечивает отказоустойчивость, масштабирование хранилища и резервное копирование метаданных.
- Упрощает отправку логов и метрик, процессы обновления и миграции.
- Играет ключевую роль в облачных сценариях обработки данных, позволяя различным инструментам (Spark, Trino, Hive) работать с одними и теми же метаданными.
Ряд продуктов Apache®, среди которых Hive
Назначение Hive Metastore
При работе с большими данными и аналитикой в облаке часто возникает вопрос о преобразовании наборов файлов в таблицы, с которыми удобно работать через SQL. Metastore представляет собой персистентную базу данных со словарем данных. Персистентность означает, что информация сохраняется на диск и остается доступной после выключения компьютера или перезапуска системы. Словарь данных содержит набор определений, описывающих структуру и формат данных. Metastore хранит метаданные о таблицах, физически расположенных в Yandex Object Storage. В нем содержится информация о местоположении файлов с данными, их организации, структуре колонок, типах данных, партиционировании и других аспектах. По сути, Metastore создает абстракцию над сырыми файлами, преобразуя их в логические таблицы для работы через SQL.
Это можно сравнить с каталогизацией книг в библиотеке. В большой библиотеке с тысячами книг без каталога пришлось бы проверять все полки в поисках нужной книги. Каталог позволяет быстро определить точное местоположение книги. Metastore выполняет аналогичную функцию для данных в Object Storage.
В реляционных базах данных (Oracle, PostgreSQL) словарь данных встроен в саму СУБД. При создании таблицы в PostgreSQL информация о ее структуре сохраняется в системных таблицах внутри той же базы данных. Однако в экосистеме больших данных, где файлы могут храниться отдельно от средств их обработки, требуется отдельный сервис для хранения этой информации — Metastore.
Сценарии использования
Metastore сам по себе не решает бизнес-задачи, но становится необходимым инструментом в определенных сценариях использования.
Работа с данными из разных аналитических инструментов
В современных архитектурах обработки данных часто используется несколько инструментов для работы с одними и теми же данными в Object Storage. Это обусловлено тем, что разные инструменты оптимальны для различных задач. Например, Apache Spark™ эффективен для массовой обработки данных и ETL-процессов (Extract, Transform, Load), в то время как Trino лучше подходит для интерактивной аналитики и быстрых запросов.
Без единого кластера каждый инструмент будет поддерживать собственную копию метаданных, что создает проблемы при изменении структуры данных. При добавлении новой колонки в таблицу и обновлении метаданных в Apache Spark™, без соответствующего обновления в Trino, запросы из Trino будут возвращать неполные данные или приводить к ошибкам.
Metastore решает эту проблему, предоставляя единый источник истины для всех метаданных. Структура таблицы описывается один раз, и все подключенные инструменты автоматически получают доступ к актуальной информации. Это не только упрощает администрирование, но и значительно снижает риск ошибок из-за несогласованности метаданных.
В ситуации, когда команда аналитиков использует Trino для интерактивных запросов, а команда инженеров данных применяет Apache Spark™ для ETL-процессов, единый Metastore обеспечивает согласованность представления данных для обеих команд, гарантируя точность результатов.
Управление жизненным циклом кластеров
Одно из основных преимуществ облачных вычислений — возможность оплаты только за фактически использованные ресурсы. Это особенно актуально для задач обработки данных с периодическим характером.
В Yandex Cloud многие клиенты используют мощные вычислительные кластеры (Yandex Data Processing с Apache Spark™ или собственные кластеры Apache Hadoop®) только для периодических задач — формирования отчетов, ночных пакетных обработок данных, обновления аналитических моделей и других подобных операций.
Такие кластеры могут включать сотни процессорных ядер и терабайты оперативной памяти, что делает их эксплуатацию дорогостоящей. Постоянное использование таких ресурсов экономически нецелесообразно, особенно если они активно задействованы лишь несколько часов в сутки.
Более эффективный подход заключается в создании кластеров на время выполнения задачи с последующим удалением. Однако в традиционной архитектуре Apache Hadoop® Metastore является частью кластера, и при удалении кластера происходит потеря всех метаданных о таблицах. При следующем запуске потребуется заново определять структуру таблиц, что трудоемко и чревато ошибками.
Отдельный управляемый Metastore решает эту проблему. Он существует независимо от вычислительных кластеров и продолжает хранить все метаданные после удаления кластеров. При создании нового кластера для следующего сеанса обработки он подключается к тому же Metastore и получает доступ ко всем определениям таблиц.
В Yandex Cloud многие пользователи реализуют подобный сценарий через Managed Service for Apache Airflow™ — сервис для оркестрации рабочих процессов. Managed Service for Apache Airflow™ по расписанию создает мощные кластеры Yandex Data Processing для обработки данных, а после завершения расчетов удаляет их для оптимизации затрат. Все метаданные сохраняются в отдельном управляемом Metastore, обеспечивая бесшовный процесс для пользователей.
Работа с современными форматами данных для аналитики
В последние годы появились новые форматы данных, специально разработанные для аналитических задач: Apache Iceberg, Delta Lake, Apache Hudi. Эти форматы значительно превосходят традиционные (CSV или Parquet) по функциональности и удобству использования.
Они обеспечивают следующие возможности:
- атомарные транзакции при записи данных;
- контроль версий данных и путешествие во времени (time travel);
- схематизация и эволюция схемы;
- оптимизация таблиц и управление их компактностью;
- изоляция запросов от параллельных записей.
Для реализации этих функций форматы, подобные Iceberg и Delta Lake, требуют централизованного управления метаданными. Им необходимо хранилище для информации о версиях таблиц, транзакциях, изменениях схемы и других аспектах. Metastore предоставляет оптимальную инфраструктуру для этой цели.
Без Metastore работа с этими продвинутыми форматами была бы значительно сложнее, а некоторые функции вообще были бы недоступны. С Metastore доступны все преимущества современных форматов данных без необходимости создания собственной инфраструктуры для управления метаданными.
В Yandex Cloud Metastore особенно полезен при создании озер данных (Data Lake) и озер аналитических данных (Data Lakehouse) с использованием форматов Delta Lake и Iceberg. Он обеспечивает необходимую инфраструктуру для хранения метаданных этих форматов, делая их использование простым и надежным.
Интеграция Metastore с сервисами Yandex Cloud
В Yandex Cloud Metastore интегрируется с другими сервисами, расширяя их возможности для работы с данными и упрощая создание комплексных решений.
Yandex Data Processing и Metastore
Yandex Data Processing — это сервис для запуска распределенных вычислений на базе Apache Spark™
Подключение Yandex Data Processing к управляемому Metastore в Yandex Cloud осуществляется просто: при создании кластера указывается URI Metastore в дополнительных настройках. После этого Apache Spark™ автоматически подключается к Metastore и получает доступ ко всем определенным в нем таблицам.
Это открывает широкие возможности для работы с данными:
- использование SparkSQL для выполнения сложных аналитических запросов к данным в Object Storage;
- работа разных кластеров Yandex Data Processing с одними и теми же таблицами без дублирования определений;
- создание и удаление кластеров по мере необходимости без потери метаданных о таблицах.
Например, Yandex Data Processing может использоваться для создания ETL-пайплайнов, которые читают данные из различных источников, преобразуют их и записывают в таблицы, определенные в Metastore. Затем эти данные будут доступны для аналитики через любой другой сервис, подключенный к тому же Metastore.
Managed Service for Trino и Metastore
Trino — это распределенный SQL-движок для аналитических запросов, который может работать с различными источниками данных, включая файлы в Object Storage. В Yandex Cloud доступен сервис Managed Service for Trino с возможностью подключения к Metastore.
Trino использует систему коннекторов для доступа к различным источникам данных. Для работы с данными через Metastore применяется коннектор Hive. При создании кластера Managed Service for Trino можно добавить каталог с типом Hive и указать URI Metastore, после чего Trino получит доступ ко всем таблицам, определенным в Metastore.
Интеграция Managed Service for Trino с Metastore особенно полезна для интерактивной аналитики. Аналитики могут выполнять SQL-запросы к данным в Object Storage без знания деталей их физического хранения. Они работают с абстракцией таблиц, а Metastore и Trino обеспечивают все аспекты, связанные с доступом к данным.
Например, бизнес-аналитик может подключиться к Managed Service for Trino через WebSQL или BI-инструмент, выполнить сложный аналитический запрос к данным, загруженным и обработанным через Yandex Data Processing, и получить результаты за несколько секунд. При этом не требуется знать физическое местоположение файлов, методы их партиционирования и формат записи — всю эту информацию Trino получает из Metastore.
Текущие особенности работы с Metastore
На текущий момент при работе с управляемым Metastore в Yandex Cloud существует несколько важных особенностей, которые необходимо учитывать при проектировании и развертывании решений.
Первая особенность связана с доступностью сервиса. В настоящее время Metastore работает только с объектными хранилищами внутри Yandex Cloud и не поддерживает подключение к внешним S3-совместимым хранилищам. Это означает невозможность использования для работы с данными, хранящимися, например, в Amazon S3 или MinIO, развернутом в собственном дата-центре.
Кроме того, Metastore доступен только по внутреннему IP-адресу в виртуальной частной сети (VPC) и не имеет публичного DNS-имени. Это обеспечивает дополнительную безопасность, но требует, чтобы все сервисы, подключающиеся к Metastore, находились в той же VPC или имели настроенный сетевой доступ.
Вторая особенность касается сетевой безопасности. Для корректной работы Metastore необходима правильная настройка групп безопасности, разрешающих необходимый сетевой трафик. Без этого кластер может отображаться в состоянии DEAD
, что затрудняет диагностику проблем (см. инструкцию по настройке групп безопасности).
Подробнее о Metastore см. в документации Apache®