Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Important
Службы контейнеров Databricks для стандартных вычислений находятся на стадии бета-тестирования. Администратор рабочей области должен включить эту функцию на странице предварительной версии рабочей области. Это отдельный сервис по сравнению с Databricks Container Services для выделенных вычислений, который уже общедоступен.
Службы контейнеров Databricks для стандартных вычислений позволяют указать образ Docker при создании стандартных вычислений, предоставляя доступ к пользовательским контейнерам в общих вычислительных средах. Ваш Docker-образ — это единственное описание среды выполнения рабочей нагрузки, поэтому вы можете воспроизвести удалённую среду на локальной машине, чтобы получать согласованные результаты в средах разработки и эксплуатации.
Пользовательский образ используется для контейнеров-песочниц, в которых выполняется пользовательский код, например команды Python REPL и пользовательские функции Python. Подсистема Spark выполняется в управляемой databricks среде, и запросы Spark отправляются между контейнерами песочницы и подсистемой Spark с помощью Spark Connect.
Кроме того, для создания пользовательского образа Azure Databricks предоставляет базовый образ, соответствующий бессерверным версиям среды, который можно расширить в соответствии с вашими потребностями.
Requirements
Чтобы использовать службы контейнеров Databricks для стандартных вычислений:
- Вычислительный ресурс должен работать под управлением Databricks Runtime 18 LTS или более поздней версии и использовать стандартный режим доступа.
- У вас должна быть установлена актуальная версия демона Docker, а команда
dockerдолжна быть доступна на вашемPATH.
Note
Обязательно выберите 18 LTS. Не выбирайте 18.0, 18.1 или 18.2.
Шаг 1. Включение служб контейнеров Databricks для стандартных вычислений
Чтобы использовать Службы контейнеров Databricks для стандартных вычислений, администратор рабочей области должен включить функцию на странице "Предварительные версии ":
- Войдите в рабочую область Azure Databricks в качестве администратора.
- В меню пользователя в правом верхнем углу щелкните "Предварительные просмотры".
- Найдите DCS для стандартных вычислений и включите его.
Шаг 2. Создание пользовательского образа
В этих инструкциях показано, как создать пользовательский образ, расширив базовый образ Databricks (рекомендуется). Базовый образ содержит зависимости, необходимые для запуска рабочих нагрузок, таких как Ubuntu, Python и JDK. Вы можете получить databricksruntime/environment:v5-standard, добавить поверх свои пакеты и получать постоянные обновления и исправления безопасности под управлением Databricks.
Если вы хотите создать минимальное базовое изображение с нуля, см. статью "Справочник: создание минимального базового образа с нуля".
Шаг 2а: Загрузите базовый образ
Чтобы извлечь базовый образ, выполните следующую команду:
docker pull databricksruntime/environment:v5-standard
Шаг 2b. Создание файла Dockerfile, расширяющего базовый образ
Установите пользовательские пакеты Python в виртуальную среду /databricks/python3 базового образа. Это виртуальная среда системы, которая запускает рабочие нагрузки.
FROM databricksruntime/environment:v5-standard
RUN /databricks/python3/bin/python -m pip install <your python package>
В следующем примере показано, как установить пакет из частного репозитория.
FROM databricksruntime/environment:v5-standard
ENV PIP_INDEX_URL=https://pypi.org/simple
RUN /databricks/python3/bin/python -m pip install --no-cache-dir simplejson
Можно использовать любую стандартную инструкцию Dockerfile (например, , RUN, ENVWORKDIR, COPY). Следующие инструкции игнорируются из-за того, как Azure Databricks запускает рабочую нагрузку:
USERCMDENTRYPOINTEXPOSEHEALTHCHECKSHELLSTOPSIGNAL
Note
Для рабочих нагрузок Scala скопируйте JAR-файлы в каталог /scala-jars/user в образе и chmod 0644 их, чтобы пользователь песочницы мог их читать. Azure Databricks загружает JAR-файлы по этому пути в classpath Scala REPL и classpath’ы Scala UDF.
Шаг 2c. Создание образа
Чтобы создать образ, выполните следующую команду:
docker build -f <your-dockerfile> -t <registry-url>/<project>[/<repo>]:<tag> .
Предупреждение
Тщательно протестируйте свой пользовательский образ в вычислительном ресурсе Azure Databricks. Образ, работающий на локальном компьютере или на компьютере сборки, может не запускаться, автоматически отключать функции или перестать работать при запуске в Azure Databricks.
Справочник. Создание минимального базового образа с нуля
Если вам нужен полный контроль над содержимым базового образа (например, для удовлетворения строгих требований к изображению, цепочке поставок или соответствия требованиям), можно создать минимальный эквивалент databricksruntime/environment:v5-standard с нуля вместо расширения.
Предупреждение
Создание с нуля является расширенным вариантом. Вы отвечаете за отслеживание изменений в исходном образе v5-standard, включая фиксированные версии Python, исправления безопасности, инструменты платформы и требуемые платформой файлы под /databricks/ и /etc/environment. Вместо этого Databricks рекомендует расширить databricksruntime/environment:v5-standard , как показано ранее на шаге 2.
Databricks предоставляет эталонный Dockerfile и requirements.txt для воссоздания основной среды Python v5-standard. Скачайте оба файла в один каталог перед сборкой:
-
Dockerfile (сохранить как
Dockerfileбез.txtрасширения) - requirements.txt
Чтобы создать образ, выполните следующую команду:
docker build -t <your-registry>/<repo>:<tag> .
Если хост сборки не может получить доступ к https://pypi.org, переопределите индекс pip на этапе сборки, выполнив следующую команду:
docker build --build-arg PIP_INDEX_URL=https://your-mirror/simple -t <your-registry>/<repo>:<tag> .
Прежде чем переходить к следующему шагу, убедитесь, что отобранные пакеты Python импортируются без ошибок, выполнив:
docker run --rm --cpus 2 <your-registry>/<repo>:<tag> \
/databricks/python3/bin/python -c \
"import pandas, numpy, pyarrow, mlflow, databricks.connect; print('OK')"
Шаг 3. Отправка образа в реестр
Затем отправьте образ в реестр Docker. Службы контейнеров Databricks поддерживают одни и те же реестры на стандартных и выделенных вычислительных ресурсах:
- Docker Hub без проверки подлинности или базовой проверки подлинности.
- Реестр контейнеров Azure с базовой аутентификацией.
Другие реестры, поддерживающие отсутствие аутентификации или базовую аутентификацию, также должны работать. Обычная проверка подлинности использует имя пользователя и пароль реестра.
Для повышения производительности извлечения изображений используйте реестр в том же облаке и регионе, что и рабочая область Azure Databricks.
echo "$REGISTRY_PASSWORD" | docker login -u <registry-username> --password-stdin <registry-url>
docker push <registry-url>/<project>[/<repo>]:<tag>
Note
Если вы используете Docker Hub, убедитесь, что ограничения скорости учитывают вычисления, которые вы ожидаете запустить в течение шестичасового периода. Подробные сведения см. в документации по Docker. Если это ограничение превышено, запросы возвращаются 429 Too Many Requests.
Шаг 4. Запуск вычислений
Вы можете запустить вычисления, использующие пользовательский образ с помощью пользовательского интерфейса или API. Должны быть соблюдены следующие требования:
- Режим доступа к вычислительным ресурсам должен быть стандартным (в API, для него задано значение
data_security_modeDATA_SECURITY_MODE_STANDARD). Если для вычислений задан режим выделенного доступа, используется другая версия служб контейнеров Databricks, которая ожидает другой базовый образ и не сможет запуститься с созданным базовым образом. - Версия среды выполнения Databricks должна быть 18 LTS или выше. Не забудьте выбрать 18 LTS, а не 18.0, 18.1 или 18.2.
Note
Чтобы выполнить запуск в пуле экземпляров, при создании пула должно быть задано значение preloaded_docker_images, а значение docker_image у кластера должно совпадать. Перед запуском см. статью Использование служб контейнеров Databricks с пулом экземпляров.
Запуск вычислений с помощью пользовательского интерфейса
На странице создания вычислений убедитесь, что для режима доступа задано значение "Стандартный ", а для среды выполнения Databricks задано значение 18 LTS или более поздней версии. Не забудьте выбрать 18 LTS, а не 18.0, 18.1 или 18.2.
В разделе Advancedвыберите вкладку Docker.
Выберите вариант Использовать собственный контейнер Docker.
В поле URL-адрес образа Docker введите пользовательский образ.
Registry Формат тега Центр Docker <organization>/<repository>:<tag>(например,databricksruntime/environment:v5-standard)Реестр контейнеров Azure (Реестр контейнеров Azure) <your-registry-name>.azurecr.io/<repository-name>:<tag>Выберите тип проверки подлинности. См. проверки подлинности образа Docker.
Note
Если при создании вычислений параметры Docker не отображаются, службы контейнеров Databricks могут не быть включены в рабочей области. Администратор рабочей области должен включить его, прежде чем любой пользователь может указать образ Docker. См. шаг 1. Включение служб контейнеров Databricks для стандартных вычислений.
Запуск вычислений с помощью API
Ниже приведен пример вызова API для создания стандартного вычислительного ресурса с использованием пользовательского образа. Убедитесь, что для data_security_mode задано значение DATA_SECURITY_MODE_STANDARD, а для spark_version — значение Databricks Runtime 18 LTS или выше. Для Databricks Runtime 18 LTS используйте 18.x-scala2.13, а не 18.0.x-scala2.13, 18.1.x-scala2.13или 18.2.x-scala2.13.
databricks clusters create \
--cluster-name <cluster-name> \
--node-type-id Standard_DS3_v2 \
--json '{
"num_workers": 1,
"docker_image": {
"url": "<docker-registry-image-url>",
"basic_auth": {
"username": "<docker-registry-username>",
"password": "<docker-registry-password>"
}
},
"spark_version": "18.x-scala2.13",
"data_security_mode": "DATA_SECURITY_MODE_STANDARD"
}'
проверка подлинности образа Docker
Требования к проверке подлинности зависят от типа образа Docker. Вы также можете использовать секреты для хранения имен пользователей и паролей проверки подлинности. См. раздел "Использование секретов для проверки подлинности".
- Для общедоступных образов Docker не требуется включать сведения о проверке подлинности. В пользовательском интерфейсе установите проверку подлинности в значение по умолчанию. Для вызова API не включать поля
basic_auth. - Для частных образов Docker для аутентификации используйте идентификатор субъекта-службы и пароль (или применимые секреты) в качестве имени пользователя и пароля.
- Для реестра контейнеров Azure выполните проверку подлинности, используя идентификатор учетной записи службы и пароль (или применимые секреты) в качестве имени пользователя и пароля. Сведения о создании субъекта-службы см. в документации по аутентификации субъекта-службы в Реестр контейнеров Azure.
Использование секретов для проверки подлинности
Служба контейнеров Databricks поддерживает использование секретов для проверки подлинности. При создании вычислительного ресурса в пользовательском интерфейсе используйте поле проверки подлинности для выбора имени пользователя и пароля. Вместо того чтобы вводить имя пользователя или пароль в обычном тексте, введите секреты в формате {{secrets/<scope-name>/<dcs-secret>}}. Если вы используете API, введите секреты в полях basic_auth.
Для получения информации о создании секретов см. Управление секретами.
Использовать Databricks Container Services с пулом экземпляров
Чтобы использовать службы контейнеров Databricks с пулом экземпляров, необходимо создать пул с помощью API пулов экземпляров, а не пользовательского интерфейса.
Пул должен быть создан с предварительно загруженными образами Docker. Это нагревает экземпляры бездействия с помощью пользовательского образа, чтобы рабочие нагрузки запускались быстрее.
preloaded_docker_images Задайте поле для запроса с теми же ссылками на образы и проверкой подлинности, которые используются при запуске вычислений напрямую. Поле представляет собой список, поэтому один пул может предварительно загрузить несколько образов.
Пул и подключенные вычислительные ресурсы должны согласиться с тем, используется ли Docker. Если для пула не задан параметр preloaded_docker_images, вы не сможете запускать на его основе вычислительные ресурсы Databricks Container Services. Создайте новый пул с установленным значением preloaded_docker_images.
Для пулов, созданных с помощью preloaded_docker_images, любой вычислительный ресурс, запускаемый для такого пула, должен указывать соответствующий docker_image в запросе на создание. В противном случае создание вычислений завершается ошибкой 'docker_image' must be provided for cluster created with instance pool: <pool-id>.
Миграция из исходных служб контейнеров Databricks
Службы контейнеров Databricks для стандартных вычислений отличаются от исходной службы контейнеров Databricks для выделенных вычислений. Эта функция имеет следующие отличия:
- Рабочие нагрузки выполняются с помощью протокола Spark Connect .
- Init-скрипты не изменяют окружение Python вашей рабочей нагрузки. Необходимо установить в образ Docker все зависимости Python. Вы можете продолжать использовать скрипты инициализации для приложений, использующих данные из Spark, таких как Datadog или агенты Kafka.
Чтобы выполнить миграцию из исходных служб контейнеров Databricks для выделенных вычислений, перестройте пользовательский образ в службах контейнеров Databricks для стандартных вычислений и обновите конфигурацию вычислений:
- Замените строку
FROMв Dockerfile наFROM databricksruntime/environment:v5-standard(или наv5-standard-armдля AWS Graviton). - Переведите инструкции Dockerfile в новый базовый образ. Стандартные инструкции Dockerfile поддерживаются с исключениями, перечисленными на шаге 2. Создание пользовательского образа.
- Установите пакеты Python в
/databricks/python3вместо любого другого virtualenv. Рабочие процессы (ноутбуки, задания Python wheel, задания Python-скриптов) читают данные по этому пути. - Обновите конфигурацию вычислений, чтобы использовать стандартный режим доступа и Databricks Runtime 18 LTS или более поздней версии. Не забудьте выбрать 18 LTS, а не 18.0, 18.1 или 18.2.
- Переместите любую настройку среды Python, которая ранее выполнялась скриптом инициализации в Dockerfile.
Ограничения
Помимо стандартных ограничений вычислений службы контейнеров Databricks для стандартных вычислений имеют следующие ограничения:
- Библиотеки с областью действия вычислительного ресурса не поддерживаются.
- Репозитории частных пакетов не поддерживаются.
- Среда выполнения Databricks для Машинное обучение не поддерживается.
- Чтобы запустить стандартные вычисления с Databricks Container Services с использованием пула экземпляров, пул должен быть создан с заданным параметром
preloaded_docker_images. См. Использование Databricks Container Services с пулом экземпляров.
Troubleshooting
Если вкладка Docker не отображается в разделе Advanced при создании вычислений, службы контейнеров Databricks не включены для рабочей области. Администратор рабочей области должен включить его в рабочей области, прежде чем любой пользователь может указать образ Docker. См. раздел "Включить службы контейнеров".
Вкладка Docker также может быть скрыта политикой вычислений docker_image.url , которая скрывает атрибут. Если функция включена, но вкладка по-прежнему отсутствует, попросите администратора рабочей области проверить, скрывает ли политика этот атрибут. См. Поддерживаемые атрибуты.