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


Рекомендации по лучшим практикам для каталога DBFS и Unity Catalog

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

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

Как DBFS используется в рабочих областях с поддержкой каталога Unity?

Действия, выполняемые в таблицах в hive_metastore используют устаревшие шаблоны доступа к данным, которые могут включать данные и учетные данные хранения, управляемые DBFS. Управляемые таблицы в рабочей области hive_metastore хранятся в корневой папке DBFS.

Как DBFS работает в режиме доступа к одному пользователю?

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

Как DBFS работает в режиме общего доступа?

Режим общего доступа объединяет управление данными каталога Unity с устаревшими списками контроля доступа (ACL) Azure Databricks. Доступ к данным в hive_metastore предоставляется только тем пользователям, которым явным образом выданы разрешения.

Для взаимодействия с файлами непосредственно с помощью DBFS необходимо иметь предоставленные разрешения ANY FILE. Так как ANY FILE позволяет пользователям обойти устаревшие списки управления доступом к таблицам в hive_metastore и получить доступ ко всем данным, управляемым DBFS, Databricks рекомендует осторожность при предоставлении этой привилегии.

Не используйте DBFS с внешними расположениями каталога Unity

Каталог Unity защищает доступ к данным во внешних расположениях, используя полные облачные URI пути для идентификации разрешений в каталогах объектного хранилища с управлением. Монтажи DBFS используют совершенно другую модель доступа к данным, которая полностью обходит каталог Unity. Databricks рекомендует не повторно использовать тома облачного хранилища объектов между подключениями DBFS и внешними томами UC, в том числе при совместном использовании данных между рабочими областями или учетными записями.

Защита управляемого каталогом Unity хранилища

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

Databricks рекомендует следующее для управляемых расположений хранения:

  • Используйте новые учетные записи хранения или контейнеры.
  • Определите настраиваемую политику идентификации для каталога Unity.
  • Ограничить доступ ко всем ресурсам Azure Databricks, управляемым каталогом Unity.
  • Ограничить доступ ко всем политикам идентификационного доступа, созданным для каталога Unity.

Добавление существующих данных во внешние места

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

Никогда не следует загружать учетную запись хранения, используемую как корень DBFS, в качестве внешнего местоположения в каталоге Unity.

Конфигурации кластера игнорируются доступом к файловой системе каталога Unity

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

Ограничение на доступ по нескольким путям

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

Например, если внешняя таблица foo определена в hive_metastore в расположении a/b/c, а внешнее расположение указано в Unity Catalog на a/b/, следующий код приведет к ошибке.

spark.read.table("foo").filter("id IS NOT NULL").write.mode("overwrite").save("a/b/c")

Эта ошибка не возникает, если эта логика разбивается на две ячейки:

df = spark.read.table("foo").filter("id IS NOT NULL")
df.write.mode("overwrite").save("a/b/c")