Федерация метасторов Hive: включить Unity Catalog для управления таблицами, зарегистрированными в метасторе Hive
В этой статье представлена федерация хранилища метаданных Hive, которая позволяет каталогу Unity управлять таблицами, хранящимися в хранилище метаданных Hive. Вы можете федеративно подключить внешнее хранилище метаданных Hive или устаревшее внутреннее хранилище метаданных Azure Databricks Hive.
Федерацию хранилища метаданных Hive можно использовать для следующих вариантов использования:
Как шаг на пути миграции к каталогу Unity, дающее возможность постепенной миграции без необходимости адаптации кода, при этом часть рабочих нагрузок продолжает использовать данные, зарегистрированные в хранилище метаданных Hive, а другие переносятся.
Этот вариант использования наиболее подходит для организаций, использующих устаревшее внутреннее хранилище метаданных Azure Databricks Hive сегодня, так как федеративные внутренние хранилища метаданных Hive позволяют выполнять как чтение, так и запись рабочих нагрузок.
Для предоставления долгосрочной гибридной модели для организаций, которые должны поддерживать некоторые данные в хранилище метаданных Hive вместе с данными, зарегистрированными в каталоге Unity.
Этот вариант использования наиболее подходит для организаций, использующих внешнее хранилище метаданных Hive, так как внешние каталоги для этих хранилищ метаданных Hive доступны только для чтения.
Схема
Обзор федерации хранилища метаданных Hive
В федерации хранилища метаданных Hive вы создаете подключение из рабочей области Azure Databricks к хранилищу метаданных Hive, а каталог Unity сканирует хранилище метаданных Hive для заполнения внешнего каталога, иногда называемого федеративным каталогом, что позволяет вашей организации работать с таблицами хранилища метаданных Hive в каталоге Unity, предоставляя централизованные элементы управления доступом, учет родословной, поиск и многое другое.
Федеративные хранилища метаданных Hive, которые являются внешними для рабочей области Azure Databricks, позволяют читать с помощью каталога Unity. Внутренние хранилища метаданных Hive позволяют считывать и записывать, обновлять метаданные хранилища метаданных Hive, а также метаданные каталога Unity при записи.
При запросе внешних таблиц в федеративном хранилище метаданных Hive каталог Unity предоставляет уровень управления, выполняя такие функции, как проверки контроля доступа и аудит, а запросы выполняются с помощью семантики хранилища метаданных Hive. Например, если пользователь запрашивает таблицу, хранящуюся в формате Parquet в внешнем каталоге, то:
- Каталог Unity проверяет, имеет ли пользователь доступ к таблице, и определяет родословную для запроса.
- Сам запрос выполняется в базовом хранилище метаданных 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, сделайте следующее:
Создайте подключение в каталоге Unity, указывающее путь и учетные данные для доступа к хранилищу метаданных Hive.
Федерация хранилища метаданных Hive использует это подключение для сканирования хранилища метаданных Hive. Для большинства систем баз данных вы предоставляете имя пользователя и пароль. Для подключения к устаревшему внутреннему рабочему пространству Azure Databricks, федерация хранилища метаданных Hive отвечает за авторизацию.
Создайте учетные данные для хранилища и внешнее местоположение в каталоге Unity для путей к таблицам, зарегистрированным в метахранилище Hive.
Внешние локации содержат пути и учетные данные хранилища, необходимые для доступа к этим путям. Учетные данные хранилища — это защищаемые объекты каталога Unity, которые указывают учетные данные, такие как управляемые удостоверения Azure, для доступа к облачному хранилищу. В зависимости от рабочего процесса, выбранного для создания внешних расположений, перед созданием внешнего расположения может потребоваться создать учетные данные хранения.
Создайте внешний каталог в каталоге Unity с помощью подключения, созданного на шаге 1.
Это каталог, используемый пользователями и рабочими процессами рабочей области для работы с таблицами хранилища метаданных Hive с помощью каталога Unity. После создания внешнего каталога каталог Unity заполняет его таблицами, зарегистрированными в хранилище метаданных Hive.
Предоставьте привилегии таблицам в внешнем каталоге с помощью каталога Unity.
Вы также можете использовать фильтры строк и столбцов каталога Unity для точного управления доступом.
Начните запрашивать данные.
Доступ к внешним таблицам с помощью каталога Unity доступен только для чтения для внешних хранилищ метаданных Hive и чтения и записи для внутренних хранилищ метаданных Hive.
Для внутренних и внешних хранилищ метаданных Hive каталог Unity постоянно обновляет метаданные таблиц при их изменении в хранилище метаданных Hive. Для внутренних хранилищ метаданных Hive новые таблицы и обновления таблиц, зафиксированные из внешнего каталога, записываются обратно в хранилище метаданных Hive, обеспечивая полное взаимодействие между каталогом Unity и каталогами хранилища метаданных Hive.
Подробные инструкции см. в следующих руководствах.
- Включить федерацию хранилища метаданных Hive для устаревшего рабочего пространства Hive
- Включить федерацию хранилища метаданных Hive для внешнего хранилища метаданных Hive
Как использовать федерацию хранилища метаданных Hive во время миграции в каталог Unity?
Федерация хранилища метаданных Hive позволяет постепенно переходить в каталог Unity, уменьшая потребность в координации между командами и рабочими нагрузками. В частности, если вы выполняете миграцию с внутреннего хранилища метаданных Hive в рабочей области Azure Databricks, возможность одновременного чтения и записи как в хранилище метаданных Hive, так и в хранилище метаданных каталога Unity позволяет поддерживать "зеркальные" хранилища метаданных на протяжении миграции, что обеспечивает следующие преимущества:
- Рабочие нагрузки, выполняемые для внешних каталогов, выполняются в режиме совместимости хранилища метаданных Hive, что снижает затраты на адаптацию кода во время миграции.
- Каждая рабочая нагрузка может выполнять миграцию независимо от других пользователей, зная, что в течение периода миграции данные будут доступны как в хранилище метаданных Hive, так и в каталоге Unity, удаляя необходимость координации между рабочими нагрузками, имеющими зависимости друг от друга.
схема
В этом разделе описывается типичный рабочий процесс миграции внутреннего хранилища метаданных Hive рабочей области Azure Databricks в Unity Catalog, при этом федерация хранилища метаданных Hive облегчает этот переход. Он не применяется к миграции внешнего хранилища метаданных Hive. Внешние каталоги для внешних хранилищ метаданных Hive не поддерживают записи.
Шаг 1. Федерация внутреннего хранилища метаданных Hive
На этом шаге создается внешний каталог, который зеркально отражает хранилище метаданных Hive в каталоге Unity. Давайте назовем его hms_in_uc
.
Схема
Заметка
В рамках процесса федерации вы настраиваете внешние локации для предоставления доступа к данным в облачном хранилище. В сценариях миграции, где некоторые рабочие нагрузки запрашивают данные с помощью устаревших механизмов доступа, а другие рабочие нагрузки запрашивают те же данные в каталоге Unity, управляемый каталогом Unity контроль доступа к внешним расположениям может предотвратить доступ устаревших рабочих нагрузок к путям хранения из вычислительных ресурсов с поддержкой каталога Unity. Вы можете включить "режим отката" в этих внешних локациях, чтобы использовать любые учетные данные, ограниченные кластером или записной книжкой, которые были определены для устаревшей рабочей нагрузки. После завершения миграции вы отключите резервный режим. См. Что такое резервный режим?.
Для получения подробной информации см. раздел Как включить федерацию метасторов Hive для устаревшей рабочей области.
Шаг 2. Запуск новых рабочих нагрузок для внешнего каталога в каталоге Unity
Если у вас есть внешний каталог, вы можете предоставить аналитикам SQL и потребителям обработки и анализа данных доступ к нему и начать разработку новых рабочих нагрузок, указывающих на него. Новые рабочие нагрузки пользуются дополнительным набором функций в Unity Catalog, включая управление доступом, поиск и родословную.
На этом шаге обычно выполняются следующие действия:
- Выберите вычислительные ресурсы, совместимые с каталогом Unity (то есть стандартные или выделенные режимы доступа к вычислительным ресурсам, хранилища SQL или бессерверные вычисления). См. требования, поддерживаемые функции и ограничения.
- Сделайте внешний каталог каталогом по умолчанию в вычислительном ресурсе или добавьте
USE CATALOG hms_in_uc
в начало кода. Так как схемы и имена таблиц во внешнем каталоге являются точными зеркалами, как в хранилище метаданных Hive, ваш код начнет обращаться к внешнему каталогу.
Шаг 3. Перенос существующих заданий для запуска в внешнем каталоге
Чтобы перенести существующие задания для запроса внешнего каталога, выполните следующие действия.
- Измените каталог по умолчанию в кластере заданий на
hms_in_uc
, задав соответствующее свойство в самом кластере или добавивUSE CATALOG hms_in_uc
в начале вашего кода. - Переключите задание на стандартный или выделенный режим доступа и выполните обновление до одной из версий среды выполнения Databricks, которая поддерживает федерацию хранилища метаданных Hive. См. требования, поддерживаемые функции и ограничения.
- Попросите администратора Azure Databricks предоставить соответствующие привилегии Unity Catalog для объектов данных в
hms_in_uc
и по всем облачным путям хранения (включенных во внешние расположения Unity Catalog), которые использует задача. См. Управление привилегиями в каталоге Unity.
Шаг 4. Запрет доступа к хранилищу метаданных Hive
После переноса всех рабочих нагрузок для запроса внешнего каталога больше не требуется хранилище метаданных Hive. Вы можете использовать устаревшие элементы управления доступом к таблицам и разрешения вычислений для блокировки прямого доступа из рабочей области Azure Databricks в хранилище метаданных Hive. Например, можно:
Отмените все привилегии для объектов в каталоге хранилища метаданных Hive.
Команда
MSCK REPAIR PRIVILEGES
удобна для этой цели. Ознакомьтесь с MSCK REPAIR PRIVILEGES и привилегиями хранилища метаданных Hive и защищаемыми объектами (устаревшими).Запретить пользователям создавать и использовать кластеры, которые обходят управление доступом к таблицам (кластеры, использующие режим совместного доступа без изоляции или устаревший пользовательский тип кластера) с помощью политик вычислительных ресурсов.
См. раздел Управление конфигурациями вычислений.
Сделайте федеративный каталог каталогом рабочей области по умолчанию.
Часто задаваемые вопросы
В следующих разделах приведены более подробные сведения о федерации хранилища метаданных 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 |
|
|
Хранение |
|
|
Типы вычислений |
|
Нет кластеров изоляции |
Вычислительные версии |
|
|
Функции каталога Unity |
|
|
Работа с мелкими клонами
важный
Неглубокая поддержка клона находится в общедоступной предварительной версии.
Федерация хранилища метаданных Hive поддерживает создание мелких клонов из таблиц, зарегистрированных в хранилище метаданных Hive, со следующими предостережениями:
При чтении поверхностного клона из федеративного каталога хранилища метаданных Hive клон имеет состояние подготовки
DEGRADED
. Это означает, что неглубокий клон использует модель разрешений Hive, которая требует, чтобы пользователь, когда считывает из неглубокого клона, имел привилегиюSELECT
как для неглубокого клона, так и для базовой таблицы.Чтобы обновить поверхностный клон, чтобы он соответствовал модели разрешений каталога Unity, владелец таблицы должен запустить
REPAIR TABLE <table> SYNC METADATA
. После исполнения команды состояние резервирования таблицы изменяется наACTIVE
, и в дальнейшем разрешения управляются каталогом Unity. Последующие операции чтения на мелком клоне требуютSELECT
только на самом мелком клоне, если команда выполняется на вычислительных ресурсах, поддерживающих каталог Unity.Неглубокие клоны, созданные в DBFS или основанные на таблицах, подключенных в DBFS, не поддерживаются.