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

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

Обзор федерации хранилища метаданных Hive см. в статье Федерация хранилища метаданных Hive: настройка Unity Catalog для управления таблицами, зарегистрированными в хранилище метаданных Hive.

Перед тем как начать

Просмотрите список служб и функций, поддерживаемых федерацией хранилища метаданных Hive: требования и поддержка функций.

Для каждого шага ниже перечислены конкретные требования.

Шаг 1. Подключение каталога Unity к хранилищу метаданных Hive

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

Requirements

  • Привилегия CREATE CONNECTION в хранилище метаданных каталога Unity.

Создание подключения

Подключение задает путь и учетные данные для доступа к внешней системе базы данных. Чтобы создать подключение, можно использовать обозреватель каталогов или команду CREATE CONNECTION SQL в записной книжке Azure Databricks или редакторе sql-запросов Databricks.

Note

Вы также можете использовать REST API Databricks или CLI Databricks для создания соединения. См. POST /api/2.1/unity-catalog/connections и команды каталога Unity .

При настройке подключения к устаревшему хранилищу метаданных Azure Databricks Hive включите этот параметр "builtin": "true" в запрос API.

Необходимые разрешения: администратор хранилища метаданных или пользователь с привилегиями CREATE CONNECTION .

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните значок данных.Каталог.

  2. В верхней части области каталога щелкните значок " и выберите "Создать подключение " в меню.

  3. На странице "Основы подключения" введите понятное имя подключения.

  4. Выберите тип подключения хранилища метаданных Hive, и тип хранилища метаданныхвнутренний.

  5. (Необязательно) Добавьте комментарий.

  6. Нажмите кнопку Далее.

  7. (Необязательно) На странице Сведения о подключении введите полностью квалифицированный путь к каталогу складского хранилища Hive .

    Это необходимо только в том случае, если вы не хотите использовать расположение по умолчанию.

  8. Нажмите Create connection (Создать подключение).

  9. На странице Основы каталога введите имя иностранного каталога.

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

    После создания каталога можно изменить авторизованные пути. См. Что такое авторизованные пути?.

  11. Нажмите Создать каталог.

  12. На странице Access выберите рабочие области, в которых пользователи могут получить доступ к созданному каталогу. Вы можете выбрать Все рабочие области имеют доступ, или нажать Назначить рабочие области, выбрать рабочие области, а затем нажать Назначить.

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

  14. Предоставьте привилегии на каталоге.

    1. Нажмите Grant.
    2. Укажите принципалов , у которых будет доступ к объектам в каталоге. Начните вводить пользователя или группу в текстовом поле, а затем щелкните пользователя или группу в возвращаемых результатах.
    3. Выберите предустановки привилегий, чтобы предоставить каждому пользователю или группе. Всем пользователям учетной записи предоставлено BROWSE по умолчанию.
      • В раскрывающемся меню выберите средство чтения данных , чтобы предоставить привилегии read объектам каталога.
      • Выберите редактор данных в раскрывающемся меню, чтобы предоставить read и modify привилегии для объектов в каталоге.
      • Вручную выберите привилегии для предоставления.
    4. Нажмите Grant.
  15. Нажмите кнопку Далее.

  16. На странице метаданных при необходимости укажите теги в формате "ключ-значение". Дополнительные сведения см. в статье Применение тегов к защищаемым объектам каталога Unity.

  17. (Необязательно) Добавьте комментарий.

  18. Нажмите кнопку Сохранить.

SQL

Выполните следующую команду в записной книжке или редакторе sql-запросов.

CREATE CONNECTION IF NOT EXISTS <connection-name> TYPE hive_metastore
  OPTIONS (
    builtin true,
    warehouse_directory '/path/to/warehouse-directory' );

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

Шаг 2. Создайте внешние расположения для данных в вашем внутреннем устаревшем хранилище метаданных Hive.

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

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

Параметры создания внешней локации

Процесс, который Databricks рекомендует для создания внешнего расположения в каталоге Unity, зависит от вашей ситуации:

  • Если вы объединяете внутреннее хранилище метаданных Databricks Hive, которое хранит данные в монтировках DBFS или корне DBFS, создайте внешнее расположение с помощью Catalog Explorer или SQL и выберите опцию Copy from DBFS mount. Кроме того, см. "Подключение к корневому расположению DBFS (устаревшее)."

Включить резервный режим на внешних локациях

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

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

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

Вы можете включить резервный режим с помощью Проводника каталога или REST API внешних местоположений каталога Unity.

Требуемые разрешения: Владелец внешнего ресурса.

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните значок данных.Каталог.
  2. На странице быстрого доступа щелкните Внешние данные >.
  3. Выберите внешнее расположение, которое нужно обновить.
  4. Включите переключатель режима аварийного переключения и нажмите Включить для подтверждения.

API

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

Создание нового внешнего расположения:

curl -X POST -H 'Authorization: Bearer <token>' \
https://<workspace-URL>/api/2.1/unity-catalog/external-locations \
--data
'{
  "name": "fallback_mode_enabled_external_location",
  "url": "abfss://container-name@storage-account.dfs.core.windows.net/external_location_container/url",
  "credential_name": "external_location_credential",
  "fallback": true
  "skip_validation": true
}'

Обновление внешней локации:

curl -X PATCH \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
https://<workspace-URL>/api/2.1/unity-catalog/external-locations/<external-location-name> \
--data
 '{
   "comment": "fallback mode enabled",
   "fallback": true
  }'

Шаг 3. Создание внешнего каталога

Note

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

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

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

Требования

Требования к разрешениям:

Чтобы создать внешний каталог:

  • Привилегия CREATE CATALOG в вашем хранилище метаданных каталога Unity.
  • Право владения подключением или привилегия CREATE FOREIGN CATALOG на подключение.
  • Чтобы ввести авторизованные пути для внешнего каталога, необходимо иметь привилегию CREATE FOREIGN SECURABLE во внешнем расположении, которое охватывает эти пути. Владельцу внешнего расположения эта привилегия предоставляется по умолчанию.

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

  • Владение каталогом или USE CATALOG

Требования к вычислениям:

  • Чтобы создать каталог с помощью обозревателя каталогов, не требуется вычислительных ресурсов.
  • Создание каталога с помощью SQL: Databricks Runtime 13.3 LTS или более поздней версии.
  • Для работы с каталогом: вычисление с стандартным режимом доступа в Databricks Runtime 13.3 LTS, 14.3 LTS, 15.1 или более поздней версии.

Создание внешнего каталога

Чтобы создать внешний каталог, можно использовать обозреватель каталогов или команду SQL CREATE FOREIGN CATALOG в записной книжке Azure Databricks или редакторе запросов SQL.

См. также Управление и работа с внешними каталогами.

Note

Вы также можете использовать API каталога Unity. См. Создание каталога в справочном разделе по REST API Databricks.

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните значок данных.Каталог , чтобы открыть обозреватель каталогов.

  2. На странице быстрого доступа щелкните кнопку "Добавить данные" и выберите "Добавить каталог".

  3. Введите имя каталога и выберите тип каталога из Foreign.

  4. Выберите подключение , созданное на шаге 1, из раскрывающегося списка.

  5. В поле Авторизованные пути введите пути к расположениям облачного хранилища, которые вы определили как внешние расположения на шаге 2. Например: abfss://container@storageaccount.dfs.core.windows.net/demo, abfss://container@storageaccount.dfs.core.windows.net/depts/finance.

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

  6. В поле расположения хранилища укажите расположение в облачном хранилище, где будут храниться метаданные каталога. Например: abfss://container@storageaccount.dfs.core.windows.net/catalog-metadata.

  7. Нажмите кнопку "Создать".

  8. (Необязательно) Щелкните Настроить, чтобы открыть руководство, которое проведёт вас через предоставление разрешений для каталога и добавление тегов. Вы также можете выполнить эти действия позже.

    См. раздел Управление привилегиями в каталога Unity и Применение тегов к защищаемым объектам каталога Unity.

  9. (Необязательно) Привязка каталога к определенным рабочим областям.

    По умолчанию доступ к каталогам можно получить из любой рабочей области, подключенной к хранилищу метаданных каталога Unity (с ограниченными правами пользователя). Если вы хотите разрешить доступ только из определенных рабочих областей, перейдите на вкладку "Рабочие области" и назначьте рабочие области. См. связывание каталога рабочей области.

  10. Заполните каталог внешних данных метаданными из хранилища метаданных Hive.

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

SQL

Выполните следующую SQL-команду в ноутбуке или редакторе запросов SQL. Элементы в квадратных скобках являются необязательными. Замените значения по умолчанию:

  • <catalog-name>: имя каталога в Azure Databricks.
  • <connection-name>: имя объекта подключения, созданного на шаге 1.
  • <path1>,<path2>. Пути к расположениям облачного хранилища, которые вы определили как внешние расположения на шаге 2. Например: abfss://container@storageaccount.dfs.core.windows.net/demo, abfss://container@storageaccount.dfs.core.windows.net/depts/finance. Авторизованные пути — это дополнительный уровень безопасности для внешних каталогов, поддерживаемых федерацией хранилища метаданных Hive. См. Что такое авторизованные пути?. См. Что такое авторизованные пути?. Если при создании каталога не добавляются авторизованные пути, можно использовать ALTER CATALOG для их добавления позже. См. ALTER CATALOG.
  • <storage-location>: расположение в облачном хранилище, в котором хранятся метаданные каталога. Например: abfss://container@storageaccount.dfs.core.windows.net/catalog-metadata.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (
  authorized_paths '<path1>,<path2>',
  storage_root '<storage-location>'
);

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

Note

Если у внешней таблицы есть расположение хранилища на DBFS, и точка монтирования DBFS, поддерживающая таблицу, была переопределена на другой путь с момента последнего доступа к таблице, доступ к таблице завершится с кодом ошибки UC_RESOLVED_DBFS_PATH_MISMATCH. Используйте следующую команду, чтобы обновить разрешенное расположение DBFS и исправить ошибку:

REFRESH FOREIGN TABLE my_federated_catalog.schema.table RESOLVE DBFS LOCATION;

Вы должны быть владельцем или иметь привилегию на управление таблицей. См. REFRESH FOREIGN (CATALOG, SCHEMAи TABLE).