Поделиться через


Федерация метасторов Hive: включить Unity Catalog для управления таблицами, зарегистрированными в метасторе Hive

В этой статье представлена федерация хранилища метаданных Hive, которая позволяет каталогу Unity управлять таблицами, хранящимися в хранилище метаданных Hive. Вы можете федеративно подключить внешнее хранилище метаданных Hive или устаревшее внутреннее хранилище метаданных Azure Databricks Hive.

Федерацию хранилища метаданных Hive можно использовать для следующих вариантов использования:

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

    Этот вариант использования наиболее подходит для организаций, использующих устаревшее внутреннее хранилище метаданных Azure Databricks Hive сегодня, так как федеративные внутренние хранилища метаданных Hive позволяют выполнять как чтение, так и запись рабочих нагрузок.

  • Для предоставления долгосрочной гибридной модели для организаций, которые должны поддерживать некоторые данные в хранилище метаданных Hive вместе с данными, зарегистрированными в каталоге Unity.

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

Схема , которая представляет федерацию Hive

Обзор федерации хранилища метаданных Hive

В федерации хранилища метаданных Hive вы создаете подключение из рабочей области Azure Databricks к хранилищу метаданных Hive, а каталог Unity сканирует хранилище метаданных Hive для заполнения внешнего каталога, иногда называемого федеративным каталогом, что позволяет вашей организации работать с таблицами хранилища метаданных Hive в каталоге Unity, предоставляя централизованные элементы управления доступом, учет родословной, поиск и многое другое.

Федеративные хранилища метаданных Hive, которые являются внешними для рабочей области Azure Databricks, позволяют читать с помощью каталога Unity. Внутренние хранилища метаданных Hive позволяют считывать и записывать, обновлять метаданные хранилища метаданных Hive, а также метаданные каталога Unity при записи.

При запросе внешних таблиц в федеративном хранилище метаданных Hive каталог Unity предоставляет уровень управления, выполняя такие функции, как проверки контроля доступа и аудит, а запросы выполняются с помощью семантики хранилища метаданных Hive. Например, если пользователь запрашивает таблицу, хранящуюся в формате Parquet в внешнем каталоге, то:

  • Каталог Unity проверяет, имеет ли пользователь доступ к таблице, и определяет родословную для запроса.
  • Сам запрос выполняется в базовом хранилище метаданных Hive, используя последние метаданные и сведения о секциях, хранящиеся там.

Диаграмма, показывающая связь между HMS, Unity Catalog и нагрузками Databricks в сценарии федерации Hive

Как федерация хранилища метаданных Hive сравнивается с использованием внешних таблиц в Unity Catalog?

Каталог Unity имеет возможность создавать внешние таблицы, принимая данные, которые уже существуют в произвольном расположении облачного хранилища и регистрируются в каталоге Unity в качестве таблицы. В этом разделе рассматриваются различия между внешними и иностранными таблицами в федеративном хранилище метаданных Hive.

Оба типа таблицы имеют следующие свойства:

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

Внешние таблицы в федеративном хранилище метаданных Hive имеют следующие свойства:

  • Автоматически обнаруживаются на основе обхода хранилища метаданных Hive. Как только таблицы создаются в хранилище метаданных Hive, они отображаются и доступны для запроса в внешнем каталоге каталога Unity.
  • Разрешить определение таблиц с семантикой Hive, например Hive SerDes и партиций.
  • Разрешить таблицам иметь перекрывающиеся пути с другими таблицами во внешних каталогах.
  • Разрешить размещение таблиц в корневых каталогах DBFS.
  • Включите представления, определенные в хранилище метаданных Hive.

Таким образом, вы можете рассматривать внешние таблицы в федеративном хранилище метаданных Hive как предложение обратной совместимости с хранилищем метаданных Hive, что позволяет рабочим нагрузкам использовать семантику только Hive, но с управлением, предоставляемым каталогом Unity.

Однако некоторые функции каталога Unity недоступны во внешних таблицах, например:

  • Функции, доступные только для управляемых таблиц каталога Unity, таких как прогнозная оптимизация.
  • Поиск по векторам, Delta Sharing, мониторинг Lakehouse и онлайн-таблицы.
  • Некоторый функционал хранилища функций, включая создание хранилища функций, создание структуры для обслуживания моделей, создание спецификаций функций, логирование моделей и пакетную оценку.

Производительность может быть незначительно хуже рабочих нагрузок в каталоге Unity или хранилище метаданных Hive, так как хранилище метаданных Hive и каталог Unity находятся на пути запроса внешней таблицы.

Дополнительные сведения о поддерживаемых функциях см. в разделе Требования, поддерживаемые функции и ограничения.

Что означает запись в внешний каталог в федеративном хранилище метаданных Hive в Azure Databricks?

Записи поддерживаются только для федеративных внутренних хранилищ метаданных Hive, а не для внешних хранилищ метаданных Hive.

Записи в федеративные хранилища метаданных имеют два типа:

  • Операции DDL, такие как CREATE TABLE, ALTER TABLEи DROP TABLE.

    Операции DDL синхронно отражаются в базовом хранилище метаданных Hive. Например, при выполнении инструкции CREATE TABLE создается таблица как в хранилище метаданных Hive, так и во внешнем каталоге.

    Предупреждение

    Это также означает, что команды DROP фиксируются в хранилище метаданных Hive. Например, DROP SCHEMA mySchema CASCADE удаляет все таблицы в базовой схеме хранилища метаданных Hive без возможности UNDROP, так как хранилище метаданных Hive не поддерживает UNDROP.

  • Операции DML, такие как INSERT, UPDATEи DELETE.

    Операции DML также синхронно отражаются в базовой таблице хранилища метаданных Hive. Например, запуск INSERT INTO добавляет записи в таблицу в хранилище метаданных Hive.

    Поддержка записи — это ключ для обеспечения простого перехода во время миграции из хранилища метаданных Hive в каталог Unity. См. Как использовать федерацию хранилища метаданных Hive во время миграции в каталог Unity?.

Как настроить федерацию хранилища метаданных Hive?

Чтобы настроить федерацию хранилища метаданных Hive, сделайте следующее:

  1. Создайте подключение в каталоге Unity, указывающее путь и учетные данные для доступа к хранилищу метаданных Hive.

    Федерация хранилища метаданных Hive использует это подключение для сканирования хранилища метаданных Hive. Для большинства систем баз данных вы предоставляете имя пользователя и пароль. Для подключения к устаревшему внутреннему рабочему пространству Azure Databricks, федерация хранилища метаданных Hive отвечает за авторизацию.

  2. Создайте учетные данные для хранилища и внешнее местоположение в каталоге Unity для путей к таблицам, зарегистрированным в метахранилище Hive.

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

  3. Создайте внешний каталог в каталоге Unity с помощью подключения, созданного на шаге 1.

    Это каталог, используемый пользователями и рабочими процессами рабочей области для работы с таблицами хранилища метаданных Hive с помощью каталога Unity. После создания внешнего каталога каталог Unity заполняет его таблицами, зарегистрированными в хранилище метаданных Hive.

  4. Предоставьте привилегии таблицам в внешнем каталоге с помощью каталога Unity.

    Вы также можете использовать фильтры строк и столбцов каталога Unity для точного управления доступом.

  5. Начните запрашивать данные.

    Доступ к внешним таблицам с помощью каталога Unity доступен только для чтения для внешних хранилищ метаданных Hive и чтения и записи для внутренних хранилищ метаданных Hive.

    Для внутренних и внешних хранилищ метаданных Hive каталог Unity постоянно обновляет метаданные таблиц при их изменении в хранилище метаданных Hive. Для внутренних хранилищ метаданных Hive новые таблицы и обновления таблиц, зафиксированные из внешнего каталога, записываются обратно в хранилище метаданных Hive, обеспечивая полное взаимодействие между каталогом Unity и каталогами хранилища метаданных Hive.

Подробные инструкции см. в следующих руководствах.

Как использовать федерацию хранилища метаданных Hive во время миграции в каталог Unity?

Федерация хранилища метаданных Hive позволяет постепенно переходить в каталог Unity, уменьшая потребность в координации между командами и рабочими нагрузками. В частности, если вы выполняете миграцию с внутреннего хранилища метаданных Hive в рабочей области Azure Databricks, возможность одновременного чтения и записи как в хранилище метаданных Hive, так и в хранилище метаданных каталога Unity позволяет поддерживать "зеркальные" хранилища метаданных на протяжении миграции, что обеспечивает следующие преимущества:

  • Рабочие нагрузки, выполняемые для внешних каталогов, выполняются в режиме совместимости хранилища метаданных Hive, что снижает затраты на адаптацию кода во время миграции.
  • Каждая рабочая нагрузка может выполнять миграцию независимо от других пользователей, зная, что в течение периода миграции данные будут доступны как в хранилище метаданных Hive, так и в каталоге Unity, удаляя необходимость координации между рабочими нагрузками, имеющими зависимости друг от друга.

схема , которая содержит общие сведения о федерации HMS в контексте миграции

В этом разделе описывается типичный рабочий процесс миграции внутреннего хранилища метаданных Hive рабочей области Azure Databricks в Unity Catalog, при этом федерация хранилища метаданных Hive облегчает этот переход. Он не применяется к миграции внешнего хранилища метаданных Hive. Внешние каталоги для внешних хранилищ метаданных Hive не поддерживают записи.

Шаг 1. Федерация внутреннего хранилища метаданных Hive

На этом шаге создается внешний каталог, который зеркально отражает хранилище метаданных Hive в каталоге Unity. Давайте назовем его hms_in_uc.

Схема , на которой показаны рабочие нагрузки, выполняемые в хранилище метаданных Hive, и существование зеркального внешнего каталога Unity Catalog, hms_in_uc

Заметка

В рамках процесса федерации вы настраиваете внешние локации для предоставления доступа к данным в облачном хранилище. В сценариях миграции, где некоторые рабочие нагрузки запрашивают данные с помощью устаревших механизмов доступа, а другие рабочие нагрузки запрашивают те же данные в каталоге Unity, управляемый каталогом Unity контроль доступа к внешним расположениям может предотвратить доступ устаревших рабочих нагрузок к путям хранения из вычислительных ресурсов с поддержкой каталога Unity. Вы можете включить "режим отката" в этих внешних локациях, чтобы использовать любые учетные данные, ограниченные кластером или записной книжкой, которые были определены для устаревшей рабочей нагрузки. После завершения миграции вы отключите резервный режим. См. Что такое резервный режим?.

Для получения подробной информации см. раздел Как включить федерацию метасторов Hive для устаревшей рабочей области.

Шаг 2. Запуск новых рабочих нагрузок для внешнего каталога в каталоге Unity

Если у вас есть внешний каталог, вы можете предоставить аналитикам SQL и потребителям обработки и анализа данных доступ к нему и начать разработку новых рабочих нагрузок, указывающих на него. Новые рабочие нагрузки пользуются дополнительным набором функций в Unity Catalog, включая управление доступом, поиск и родословную.

Диаграмма, показывающая существующие рабочие нагрузки, работающие в хранилище метаданных Hive, и новые рабочие нагрузки, выполняемые в зеркальном внешнем каталоге Unity Catalog, hms_in_uc

На этом шаге обычно выполняются следующие действия:

  • Выберите вычислительные ресурсы, совместимые с каталогом Unity (то есть стандартные или выделенные режимы доступа к вычислительным ресурсам, хранилища SQL или бессерверные вычисления). См. требования, поддерживаемые функции и ограничения.
  • Сделайте внешний каталог каталогом по умолчанию в вычислительном ресурсе или добавьте USE CATALOG hms_in_uc в начало кода. Так как схемы и имена таблиц во внешнем каталоге являются точными зеркалами, как в хранилище метаданных Hive, ваш код начнет обращаться к внешнему каталогу.

Шаг 3. Перенос существующих заданий для запуска в внешнем каталоге

Чтобы перенести существующие задания для запроса внешнего каталога, выполните следующие действия.

  1. Измените каталог по умолчанию в кластере заданий на hms_in_uc, задав соответствующее свойство в самом кластере или добавив USE CATALOG hms_in_uc в начале вашего кода.
  2. Переключите задание на стандартный или выделенный режим доступа и выполните обновление до одной из версий среды выполнения Databricks, которая поддерживает федерацию хранилища метаданных Hive. См. требования, поддерживаемые функции и ограничения.
  3. Попросите администратора Azure Databricks предоставить соответствующие привилегии Unity Catalog для объектов данных в hms_in_uc и по всем облачным путям хранения (включенных во внешние расположения Unity Catalog), которые использует задача. См. Управление привилегиями в каталоге Unity.

Второй экземпляр схемы, предоставляющий обзор федерации HMS в контексте миграции

Шаг 4. Запрет доступа к хранилищу метаданных Hive

После переноса всех рабочих нагрузок для запроса внешнего каталога больше не требуется хранилище метаданных Hive. Вы можете использовать устаревшие элементы управления доступом к таблицам и разрешения вычислений для блокировки прямого доступа из рабочей области Azure Databricks в хранилище метаданных Hive. Например, можно:

  1. Отмените все привилегии для объектов в каталоге хранилища метаданных Hive.

    Команда MSCK REPAIR PRIVILEGES удобна для этой цели. Ознакомьтесь с MSCK REPAIR PRIVILEGES и привилегиями хранилища метаданных Hive и защищаемыми объектами (устаревшими).

  2. Запретить пользователям создавать и использовать кластеры, которые обходят управление доступом к таблицам (кластеры, использующие режим совместного доступа без изоляции или устаревший пользовательский тип кластера) с помощью политик вычислительных ресурсов.

    См. раздел Управление конфигурациями вычислений.

  3. Сделайте федеративный каталог каталогом рабочей области по умолчанию.

    См. управление каталогом по умолчанию.

Часто задаваемые вопросы

В следующих разделах приведены более подробные сведения о федерации хранилища метаданных Hive.

Что такое резервный режим?

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

Каталог Unity получает доступ к облачному хранилищу с помощью внешних местоположений, которые являются защищаемыми объектами, определяющими путь и учетную запись для доступа к вашей облачной учетной записи. Вы можете выдавать разрешения на них, например READ FILES, чтобы управлять тем, кто может использовать путь. Одна из проблем в процессе миграции заключается в том, что вы, возможно, не захотите, чтобы каталог Unity сразу начал управлять всем доступом к пути, например, если у вас есть существующие, неимигрированные рабочие нагрузки, ссылающиеся на этот путь.

Режим запасного варианта позволяет отложить строгое применение контроля доступа Unity Catalog к внешним местоположениям. Если включен режим резервного доступа, рабочие нагрузки, имеющие доступ к пути, сначала проверяются на соответствие разрешениям каталога Unity. В случае неуспеха используется альтернатива, предусматривающая учетные данные, применимые в рамках кластера или конкретной записной книжки, например, профили экземпляров или свойства конфигурации Apache Spark. Это позволяет существующим рабочим нагрузкам продолжать использовать текущую учетную запись.

Резервный режим предназначен только для использования во время миграции. Вы должны отключить его, когда все рабочие нагрузки перенесены и вы готовы применить управление доступом в Unity Catalog.

Журнал аудита запросов для резервного использования

Используйте следующий запрос, чтобы проверить, был ли доступ к внешнему ресурсу в резервном режиме за последние 30 дней. Если в учетной записи отсутствует резервный режим доступа, Databricks рекомендует отключить резервный режим.

SELECT event_time, user_identity, action_name, request_params, response, identity_metadata
FROM system.access.audit
WHERE
request_params.fallback_enabled = 'true' AND
request_params.path LIKE '%some-path%' AND
event_time >= current_date() - INTERVAL 30 DAYS
LIMIT 10

Что такое авторизованные пути?

При создании внешнего каталога, поддерживаемого федерацией хранилища метаданных Hive, вам будет предложено предоставить авторизованные пути в облачное хранилище, где хранятся таблицы хранилища метаданных Hive. Любая таблица, к которой требуется получить доступ с помощью федерации хранилища метаданных Hive, должна охватываться этими путями. Databricks рекомендует, чтобы авторизованные пути были подпутями, которые являются общими для большого количества таблиц. Например, если у вас есть таблицы в abfss://container@storageaccount.dfs.core.windows.net/bucket/table1, ./bucket/table2и ./bucket/table3, необходимо указать abfss://container@storageaccount.dfs.core.windows.net/bucket/ в качестве авторизованного пути.

Вы можете использовать UCX для определения путей, присутствующих в хранилище метаданных Hive.

Авторизованные пути добавляют дополнительный уровень безопасности для внешних каталогов, поддерживаемых федерацией хранилища метаданных Hive. Они позволяют владельцу каталога применять правила к данным, к которым пользователи могут получить доступ, используя федерацию. Это полезно, если хранилище метаданных Hive позволяет пользователям обновлять метаданные и произвольно изменять расположения таблиц— обновления, которые в противном случае будут синхронизированы в внешний каталог. В этом сценарии пользователи могут потенциально переопределить таблицы, к которым у них уже есть доступ, чтобы они указывали на новые расположения, к которым они в противном случае не имели доступа.

Можно ли интегрировать хранилища метаданных Hive с помощью UCX?

UCX, проект Databricks Labs для переноса рабочих пространств Azure Databricks в Unity Catalog, включает утилиты для настройки федерации хранилища метаданных Hive.

  • enable-hms-federation
  • create-federated-catalog

См. файл Readme проекта на GitHub. Введение в UCX см. в статье . Используйте служебные программы UCX для обновления рабочей области до Unity Catalog.

Требования, поддерживаемые функции и ограничения

В следующей таблице перечислены службы и функции, поддерживаемые федерацией хранилища метаданных Hive. В некоторых случаях также перечислены неподдерживаемые службы или функции. В этих таблицах "HMS" обозначает хранилище метаданных Hive.

Категория Поддерживается Не поддерживается
Хранилища метаданных
  • Устаревшие хранилища метаданных Hive рабочей области (внутренние для Databricks)
  • Внешние хранилища метаданных в Apache Hive версии 0.13, 2.3 и 3.1
  • MySQL, SQL Server или Postgres
Операции
  • Внутренний интерфейс Databricks HMS: чтение и запись
  • Внешний HMS: только для чтения
Ресурсы данных метаданного хранилища Hive
  • Управляемые и внешние таблицы в хранилище метаданных Hive
  • Схемы
  • Представления
  • Таблицы Hive SerDe
  • Доступ к мелким клонам, зарегистрированным в хранилище метаданных Hive, через внешний каталог (общедоступная предварительная версия). См. работа с мелкими клонами.
  • Определение новых мелких клонов в внешнем каталоге (общедоступная предварительная версия)
  • Функции Hive и UDF
  • Таблицы, поддерживаемые JDBC
  • Delta Sharing: общие таблицы
Хранение
  • Azure Data Lake Storage 2-го поколения
  • Таблицы, ссылающиеся на точки монтирования DBFS, включая корневую папку DBFS
  • Таблицы, пути которых перекрываются с другими путями таблиц HMS, заданных во внешних местах
  • поддержка брандмауэра для учетной записи хранилища рабочей области
  • Таблицы HMS, пути которых пересекаются с путями объектов в родном каталоге Unity
  • Доступ к таблицам в корневом каталоге DBFS или точкам монтирования, зарегистрированным во внешнем HMS
  • Доступ к таблицам в корневом каталоге DBFS или в точках монтирования из рабочей области, отличной от той, в которой определен внутренний HMS.
Типы вычислений
  • Вычисление в стандартном режиме доступа (прежнее название — режим общего доступа)
  • Вычисление выделенного режима доступа (прежнее название — режим доступа с одним пользователем)
  • Бессерверные (все)
  • Хранилища SQL (все)
Нет кластеров изоляции
Вычислительные версии
  • Все каналы Databricks SQL
  • Все каналы DLT
  • Databricks Runtime 13.3 LTS
  • Databricks Runtime 14.3 LTS
  • Databricks Runtime 15.1 и более поздние версии
Функции каталога Unity
  • Модель привилегий каталога Unity
  • Фильтры строк и маски столбцов
  • Аудит
  • Нисходящая линия
  • Поиск таблицы
  • Доступ между рабочими областями (кроме корневого и подключаемого сервера DBFS)
  • Доступ к данным ограничен определёнными внешними местоположениями
  • Delta Sharing (Дельта шаринг)
  • Мониторинг озерохранилища
  • Векторный поиск
  • Онлайн-таблицы
  • Некоторые функции хранилища функций, включая создание хранилища компонентов, создание модели, создание спецификаций, ведение журнала моделей и пакетную оценку
  • Нельзя записывать материализованные представления DLT и потоковые таблицы в внешний каталог, но можно использовать внешние таблицы и представления в качестве источника для материализованных представлений DLT и потоковых таблиц.
  • Автоматическая миграция устаревших списков управления доступом (ACLs) к привилегиям каталога Unity для федеративного каталога. UCX могут помочь в этом.

Работа с мелкими клонами

важный

Неглубокая поддержка клона находится в общедоступной предварительной версии.

Федерация хранилища метаданных Hive поддерживает создание мелких клонов из таблиц, зарегистрированных в хранилище метаданных Hive, со следующими предостережениями:

  • При чтении поверхностного клона из федеративного каталога хранилища метаданных Hive клон имеет состояние подготовки DEGRADED. Это означает, что неглубокий клон использует модель разрешений Hive, которая требует, чтобы пользователь, когда считывает из неглубокого клона, имел привилегию SELECT как для неглубокого клона, так и для базовой таблицы.

    Чтобы обновить поверхностный клон, чтобы он соответствовал модели разрешений каталога Unity, владелец таблицы должен запустить REPAIR TABLE <table> SYNC METADATA. После исполнения команды состояние резервирования таблицы изменяется на ACTIVE, и в дальнейшем разрешения управляются каталогом Unity. Последующие операции чтения на мелком клоне требуют SELECT только на самом мелком клоне, если команда выполняется на вычислительных ресурсах, поддерживающих каталог Unity.

  • Неглубокие клоны, созданные в DBFS или основанные на таблицах, подключенных в DBFS, не поддерживаются.