Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Important
Databricks Container Services para procesos estándar está en Beta. Un administrador del área de trabajo debe habilitar esta característica desde la página Vistas previas del área de trabajo. Se trata de un servicio independiente de Databricks Container Services para cómputo dedicado, que ya está disponible de forma general.
Databricks Container Services para proceso estándar le permite especificar una imagen de Docker al crear un proceso estándar, lo que proporciona acceso a contenedores personalizados en entornos de proceso compartidos. La imagen de Docker es la única definición del entorno de carga de trabajo, por lo que puede reproducir el entorno remoto localmente para obtener resultados coherentes en el desarrollo y la producción.
Tu imagen personalizada se utiliza para los contenedores de entorno de pruebas que ejecutan código de usuario, como los comandos REPL de Python y las UDF de Python. El motor Spark se ejecuta en un entorno administrado por Databricks, y las consultas de Spark se envían entre los contenedores del entorno de pruebas y el motor Spark mediante Spark Connect.
Además, para ayudar a construir tu imagen personalizada, Azure Databricks proporciona imágenes base alineadas con versiones de entornos serverless que puedes ampliar para satisfacer tus necesidades.
Requirements
Para usar Databricks Container Services para el cómputo estándar:
- El recurso de proceso debe ejecutar Databricks Runtime 18 LTS o superior y usar el modo de acceso estándar .
- Debe disponer de una versión reciente del daemon de Docker, con el comando
dockerdisponible en suPATH.
Note
Asegúrese de seleccionar 18 LTS. No seleccione 18.0, 18.1 o 18.2.
Utilice la siguiente tabla para identificar la versión mínima de Databricks en tiempo de ejecución requerida por cada imagen base:
| Imagen base | Tiempo mínimo de ejecución de Databricks | Versión mínima de la API spark_version |
Versión de entorno sin servidor |
|---|---|---|---|
databricksruntime/environment:v6-standard |
19 | 19.x-scala2.13 |
6 |
databricksruntime/environment:v5-standard |
18 LTS | 18.3.x-scala2.13 |
5 |
Paso 1: Habilitación de Databricks Container Services para el proceso estándar
Para usar Databricks Container Services para el proceso estándar, un administrador del área de trabajo debe habilitar la característica desde la página Versiones preliminares :
- Inicie sesión en el área de trabajo de Azure Databricks como administrador.
- En el menú de usuario de la esquina superior derecha, haga clic en Vista previa.
- Busque DCS para el cómputo estándar y actívelo.
Paso 2: Compilación de la imagen personalizada
Estas instrucciones muestran cómo crear una imagen personalizada mediante la extensión de una imagen base proporcionada por Databricks (recomendado). La imagen base contiene las dependencias necesarias para iniciar las cargas de trabajo, como Ubuntu, Python y JDK. Selecciona una imagen base cuyo requisito mínimo de Databricks Runtime cumpla tu entorno de cómputo y aplica tus personalizaciones sobre ella. Reconstruye tu imagen periódicamente para incorporar los últimos parches de la imagen base. Los ejemplos de este artículo se usan v6-standard con Databricks Runtime 19.
Si desea crear una imagen base mínima desde cero, consulte Referencia: compilación de una imagen base mínima desde cero.
Paso 2a: Extracción de la imagen base
Para extraer la imagen base, ejecute:
docker pull databricksruntime/environment:v6-standard
Paso 2b: Escribir un Dockerfile que extienda la imagen base
Instale paquetes de Python personalizados en el entorno virtual /databricks/python3 de la imagen base. Este es el entorno virtual del sistema que inicia las cargas de trabajo.
FROM databricksruntime/environment:v6-standard
RUN /databricks/python3/bin/python -m pip install <your python package>
El siguiente ejemplo muestra cómo instalar un paquete a partir de un índice de paquetes personalizado sin conservar la URL del índice en el entorno de ejecución. Anula PIP_INDEX_URL en tiempo de compilación cuando uses un índice privado.
FROM databricksruntime/environment:v6-standard
ARG PIP_INDEX_URL=https://pypi.org/simple
RUN PIP_INDEX_URL="${PIP_INDEX_URL}" \
/databricks/python3/bin/python -m pip install --no-cache-dir simplejson
Puede usar cualquier instrucción dockerfile estándar (por ejemplo, RUN, ENV, WORKDIR, COPY). Las instrucciones siguientes se omiten debido a cómo Azure Databricks inicia la carga de trabajo:
USERCMDENTRYPOINTEXPOSEHEALTHCHECKSHELLSTOPSIGNAL
Note
En el caso de las cargas de trabajo de Scala, copie los archivos JAR en el directorio /scala-jars/user de la imagen y chmod 0644 para que el usuario del espacio aislado pueda leerlos. Azure Databricks carga los archivos JAR desde esta ruta en la ruta de clases de Scala REPL y en las rutas de clases de Scala UDF.
Paso 2c: Compilación de la imagen
Para compilar la imagen, ejecute:
docker build -f <your-dockerfile> -t <registry-url>/<project>[/<repo>]:<tag> .
Advertencia
Pruebe exhaustivamente la imagen personalizada en un recurso de cómputo de Azure Databricks. Es posible que una imagen que funcione en una máquina local o de compilación no se inicie, deshabilite las características de forma silenciosa o deje de funcionar cuando se inicia en Azure Databricks.
Referencia: crear una imagen base mínima desde cero
Si necesitas control total sobre el contenido de tu imagen base (por ejemplo, para cumplir con requisitos estrictos de tamaño de imagen, cadena de suministro o cumplimiento), puedes construir una imagen mínima centrada en Python desde cero en lugar de ampliar databricksruntime/environment:v6-standard.
La referencia creada desde cero recrea únicamente el entorno esencial de Python. No incluye el JDK ni otros componentes de entorno de ejecución que no son de Python de v6-standard y no admite cargas de trabajo de Scala. Extiende la imagen base proporcionada por Databricks cuando tus cargas de trabajo requieran esos componentes.
Advertencia
La creación desde cero es una opción avanzada. Asumes la responsabilidad de realizar un seguimiento de los cambios en la imagen v6-standard, incluidos los pines de Python, los parches de seguridad, las herramientas de la plataforma y los archivos requeridos por la plataforma que se encuentran en /databricks/ y /etc/environment. Databricks recomienda extender databricksruntime/environment:v6-standard como se mostró anteriormente en el Paso 2.
Databricks proporciona archivos de referencia que recrean el entorno esencial en Python de cada imagen base. Descarga el Dockerfile y el archivo de dependencias correspondientes a tu imagen base en el mismo directorio antes de compilar. Guardar Dockerfile.txt como Dockerfile.
| Imagen base | Dockerfile | Archivo de dependencias |
|---|---|---|
v6-standard |
Dockerfile.txt | pyproject.toml |
v5-standard |
Dockerfile.txt | requirements.txt |
Para compilar la imagen, ejecute:
docker build -t <your-registry>/<repo>:<tag> .
Si el host de compilación no puede acceder a https://pypi.org, invalide el índice pip en tiempo de compilación ejecutando:
docker build --build-arg PIP_INDEX_URL=https://your-mirror/simple -t <your-registry>/<repo>:<tag> .
Antes de continuar con el paso siguiente, compruebe que los paquetes de Python mantenidos se importan de forma limpia mediante la ejecución de:
docker run --rm --cpus 2 <your-registry>/<repo>:<tag> \
/databricks/python3/bin/python -c \
"import pandas, numpy, pyarrow, mlflow, databricks.connect; print('OK')"
Paso 3: Inserción de la imagen en un registro
A continuación, inserte la imagen en un registro de Docker. Databricks Container Services admite los mismos registros de contenedores tanto en el cómputo estándar como en el dedicado:
- Docker Hub sin autenticación ni autenticación básica.
- Azure Container Registry con autenticación básica.
Otros registros que no admiten autenticación o autenticación básica también deben funcionar. La autenticación básica usa el nombre de usuario y la contraseña del Registro.
Para obtener el mejor rendimiento de extracción de imágenes, use un registro en la misma nube y región que el área de trabajo de Azure Databricks.
echo "$REGISTRY_PASSWORD" | docker login -u <registry-username> --password-stdin <registry-url>
docker push <registry-url>/<project>[/<repo>]:<tag>
Note
Si usa Docker Hub, compruebe que los límites de velocidad admiten el proceso que espera iniciar en un período de seis horas. Consulte la documentación de Docker para obtener más información. Si se supera este límite, las solicitudes devuelven 429 Too Many Requests.
Paso 4: Iniciar el proceso
Puede iniciar instancias de cómputo que utilicen su imagen personalizada a través de la interfaz de usuario o de la API. Deben cumplirse los siguientes requisitos:
- El modo de acceso al cómputo debe ser Estándar (en la API, establezca
data_security_modeenDATA_SECURITY_MODE_STANDARD). Si el proceso se establece en modo de acceso Dedicado , se usa una versión diferente de Databricks Container Services, que espera una imagen base diferente y no se iniciará con la imagen base que ha compilado. - La versión de Databricks Runtime debe ser 18 LTS o superior. Asegúrese de seleccionar 18 LTS, no 18.0, 18.1 o 18.2.
- La versión de tiempo de ejecución de Databricks debe cumplir el requisito mínimo para tu imagen base.
Note
Para iniciar en un grupo de instancias, el grupo debe crearse con preloaded_docker_images configurado, y el valor de docker_image del clúster debe coincidir. Consulte Usar Databricks Container Services con un grupo de instancias antes de iniciar.
Inicio del proceso mediante la interfaz de usuario
En la página Crear computación, configura el modo de acceso en Estándar y selecciona un tiempo de ejecución de Databricks que cumpla con el requisito mínimo para tu imagen base.
En Advanced, seleccione la pestaña Docker.
Seleccione Usar su propio contenedor de Docker.
En el campo Dirección URL de la imagen de Docker , escriba la imagen personalizada.
Registro Formato de etiqueta Docker Hub <organization>/<repository>:<tag>(por ejemplo:databricksruntime/environment:v6-standard)Azure Container Registry (Registro de Contenedores de Azure) <your-registry-name>.azurecr.io/<repository-name>:<tag>Seleccione el tipo de autenticación. Consulte Autenticación de imágenes de Docker.
Note
Si no ve la configuración de Docker al crear procesos, es posible que Databricks Container Services no esté habilitado en su espacio de trabajo. Un administrador del área de trabajo debe habilitarlo para que cualquier usuario pueda especificar una imagen de Docker. Consulte Paso 1: Habilitar Databricks Container Services para la computación estándar.
Inicio del proceso mediante la API
La siguiente llamada API de ejemplo crea computación estándar con una v6-standard imagen personalizada en Databricks Runtime 19. Establece data_security_mode en DATA_SECURITY_MODE_STANDARD. El spark_version debe cumplir el requisito mínimo para tu imagen base.
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": "19.x-scala2.13",
"data_security_mode": "DATA_SECURITY_MODE_STANDARD"
}'
Autenticación de imágenes de Docker
Los requisitos de autenticación dependen del tipo de imagen de Docker. También puede usar secretos para almacenar nombres de usuario y contraseñas de autenticación. Consulte Uso de secretos para la autenticación.
- En el caso de las imágenes públicas de Docker, no es necesario incluir información de autenticación. En la IU, defina Autenticación en Predeterminado. Para la llamada a la API, no incluya los campos
basic_auth. - Para imágenes de Docker privadas, autentique con un identificador de entidad de servicio y una contraseña (o los secretos aplicables) como nombre de usuario y contraseña.
- Para Azure Container Registry, autentíquese mediante un identificador de entidad de servicio y una contraseña (o secretos aplicables) como nombre de usuario y contraseña. Consulte Autenticación de Azure Container Registry con entidades de servicio para obtener información sobre cómo crear la entidad de servicio.
Uso de secretos para la autenticación
El servicio de contenedor de Databricks admite el uso de secretos para la autenticación. Al crear el recurso de cómputo en la interfaz de usuario, use el campo Autenticación para seleccionar Nombre de usuario y contraseña. En lugar de introducir el nombre de usuario o la contraseña en texto sin formato, introduzca sus secretos usando el formato {{secrets/<scope-name>/<dcs-secret>}}. Si usa la API, escriba los secretos en los campos basic_auth.
Para obtener información sobre cómo crear secretos, consulte administración de secretos.
Uso de Databricks Container Services con un grupo de instancias
Para usar Databricks Container Services con un grupo de instancias, debe crear el grupo mediante la API de grupos de instancias, no la interfaz de usuario.
El grupo debe crearse con imágenes de Docker precargadas. Esto calienta las instancias inactivas con la imagen personalizada para que las cargas de trabajo comiencen más rápido. Establezca el campo preloaded_docker_images en la solicitud con las mismas referencias de imagen y la misma autenticación que utilice al iniciar procesos directamente. El campo es una lista, por lo que un único grupo puede cargar previamente varias imágenes.
El grupo y sus recursos de proceso adjuntos deben estar de acuerdo en si Docker está en uso. Si un grupo no tiene preloaded_docker_images configurado, no se puede iniciar la computación de Databricks Container Services con él. Cree un nuevo pool con preloaded_docker_images configurado.
Para los grupos creados con preloaded_docker_images, cualquier recurso de cómputo que se inicie para el grupo debe incluir un docker_image coincidente en su solicitud de creación. De lo contrario, la creación del proceso fallará con 'docker_image' must be provided for cluster created with instance pool: <pool-id>.
Migrar desde Databricks Container Services original
Databricks Container Services para cómputo estándar es un servicio distinto del Databricks Container Services para cómputo dedicado original. Esta característica tiene las siguientes diferencias:
- Las cargas de trabajo se ejecutan mediante el protocolo Spark Connect .
- Los scripts de inicialización no modifican el entorno de Python de la carga de trabajo. Debe instalar todas las dependencias de Python en la imagen de Docker. Puede seguir usando scripts de inicialización para aplicaciones que consumen datos de Spark, como los agentes de Datadog o Kafka.
Para migrar desde el servicio original Databricks Container Services para cómputo dedicado, vuelva a compilar su imagen personalizada en Databricks Container Services para cómputo estándar y actualice la configuración de cómputo:
- Sustituye la
FROMlínea en tu archivo Dockerfile por una imagen base cuyo requisito mínimo de tiempo de ejecución de Databricks se cumpla con tu tiempo de ejecución objetivo. Para AWS Graviton, usa la variante de imagen correspondiente-arm. - Portar las instrucciones de Dockerfile a la nueva imagen base. Se admiten las instrucciones estándar de Dockerfile, con las excepciones enumeradas en paso 2: Compilar la imagen personalizada.
- Instale paquetes de Python en
/databricks/python3en lugar de en cualquier otro virtualenv. Las cargas de trabajo (notebooks, trabajos con paquetes wheel de Python y trabajos de scripts de Python) leen desde esta ruta. - Actualiza tu configuración de cálculo para usar el modo de acceso estándar y selecciona una versión de tiempo de ejecución Databricks que cumpla con el requisito mínimo para tu imagen base.
- Mueva cualquier configuración del entorno de Python que un script de inicialización haya realizado anteriormente en el Dockerfile.
Limitaciones
Además de las limitaciones de proceso estándar, Databricks Container Services para el proceso estándar tiene las siguientes limitaciones:
- No se admiten bibliotecas de ámbito de proceso.
- No se admiten repositorios de paquetes privados.
- Databricks Runtime para aprendizaje automático no es compatible.
- Para usar el procesamiento estándar con Databricks Container Services con un grupo de instancias, el grupo debe crearse con
preloaded_docker_imagesconfigurado. Consulte Uso de Databricks Container Services con un grupo de instancias.
Troubleshooting
Si la pestaña Docker no aparece debajo de Avanzado al crear un recurso de proceso, Databricks Container Services no está habilitado para el espacio de trabajo. Un administrador del área de trabajo debe habilitarlo en el área de trabajo para que cualquier usuario pueda especificar una imagen de Docker. Consulte Activar servicios de contenedor.
La pestaña Docker también se puede ocultar mediante una directiva de proceso que oculta el docker_image.url atributo . Si la característica está habilitada, pero todavía falta la pestaña, pida a un administrador del área de trabajo que compruebe si la directiva asignada oculta este atributo. Consulte Atributos admitidos.