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


Скрипты инициализации на уровне кластера

Скрипты инициализации с кластерной областью — это скрипты инициализации, определенные в конфигурации кластера. Скрипты инициализации на уровне кластера применяются как к кластерам, созданным для выполнения заданий, так и к тем, которые вы создаете.

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

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

Если скрипт инициализации для кластера возвращает ненулевой код результата, запуск кластера не удаётся. Вы можете устранить неполадки со скриптами инициализации кластера, настроив доставку логов кластера и проверив журнал инициализационных скриптов. Смотрите ведение журнала скриптов Init.

Настройка инициализационного скрипта на уровне кластера через пользовательский интерфейс

В этом разделе содержатся инструкции по настройке кластера для запуска скрипта инициализации с помощью пользовательского интерфейса Azure Databricks.

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

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

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

  1. На странице конфигурации кластера нажмите кнопку "Дополнительно ".
  2. В нижней части страницы откройте вкладку Скрипты инициализации:
  3. В выпадающем списке источника выберите тип источника: рабочая область , том или ABFSS .
  4. Укажите путь к скрипту инициализации, например один из следующих примеров:
    • Для скрипта инициализации, хранящегося в файлах рабочей области: /Workspace/<path-to-script>/<script-name>.sh
    • Для скрипта инициализации, хранящегося в томах каталога Unity: /Volumes/<catalog>/<schema>/<volume>/<path-to-script>/<script-name>.sh
    • Для скрипта инициализации, хранящегося в хранилище объектов: abfss://[email protected]/path/to/init-script
  5. Нажмите кнопку Добавить.

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

В стандартном режиме доступа используется удостоверение владельца кластера.

Примечание.

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

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

Примечание.

Если вы настраиваете инициализационный скрипт с использованием типа источника ABFSS , необходимо настроить учетные данные доступа.

Databricks рекомендует использовать принципалы службы Microsoft Entra ID для управления доступом к скриптам инициализации, хранящимся в Azure Data Lake Storage. Чтобы завершить настройку, используйте следующую связанную документацию:

  1. Создайте учетную запись службы с разрешениями на чтение и просмотр для нужных объектов blob. См. раздел "Доступ к хранилищу с помощью учетной записи службы и Microsoft Entra ID (Azure Active Directory)".

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

  3. Задайте свойства в конфигурации Spark и переменных среды при создании кластера, как показано в следующем примере:

    Конфигурация Spark:

    spark.hadoop.fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net OAuth
    spark.hadoop.fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
    spark.hadoop.fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net <application-id>
    spark.hadoop.fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net {{secrets/<secret-scope>/<service-credential-key>}}
    spark.hadoop.fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net https://login.microsoftonline.com/<tenant-id>/oauth2/token
    

    Переменные среды:

    SERVICE_CREDENTIAL={{secrets/<secret-scope>/<service-credential-key>}}
    
  4. (Необязательно) Рефакторинг скриптов инициализации с помощью azcopy или Azure CLI.

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

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

Скрипты инициализации с областью действия кластера в DBFS прекращают поддержку. Параметр DBFS в пользовательском интерфейсе существует в некоторых рабочих областях для поддержки устаревших рабочих нагрузок и не рекомендуется. Необходимо перенести все скрипты инициализации, хранящиеся в DBFS. Инструкции по миграции см. в разделе "Миграция сценариев инициализации" из DBFS.

Наладка сценариев инициализации, ограниченных областью кластера

  • Скрипт должен существовать в настроенном расположении. Если скрипт не существует, попытки запустить кластер или увеличить масштаб исполнителя приводят к сбою.
  • Размер скрипта инициализации не может превышать 64 КБ. Если скрипт превысит этот размер, кластер не сможет запуститься, и в журнале кластера появится сообщение о сбое.