Databricks Container Services para la computación estándar

Important

Databricks Container Services para el cómputo 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.

Además, para ayudar a crear la imagen personalizada, Azure Databricks proporciona una imagen base alineada con versiones de entorno sin servidor que puede ampliar para satisfacer sus necesidades.

Requirements

Para usar Databricks Container Services para el cómputo estándar:

  • El recurso de proceso debe ejecutar Databricks Runtime 18.3 o superior y usar el modo de acceso estándar .
  • Debe disponer de una versión reciente del daemon de Docker, con el comando docker disponible en su PATH.

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 :

  1. Inicie sesión en el área de trabajo de Azure Databricks como administrador.
  2. En el menú de usuario de la esquina superior derecha, haga clic en Vista previa.
  3. 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. Puede obtener databricksruntime/environment:v5-standard, superponer sus paquetes y beneficiarse de actualizaciones continuas y parches de seguridad administrados por Databricks.

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:v5-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:v5-standard

RUN /databricks/python3/bin/python -m pip install <your python package>

En el ejemplo siguiente se muestra cómo instalar un paquete desde un repositorio privado.

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

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:

  • USER
  • CMD
  • ENTRYPOINT
  • EXPOSE
  • HEALTHCHECK
  • SHELL
  • STOPSIGNAL

Note

En el caso de las cargas de trabajo de Scala, copie los archivos JAR en el /scala-jars/user directorio de la imagen y chmod 0644 para que el usuario del espacio aislado pueda leerlos. Azure Databricks carga los archivos JAR de esta ruta de acceso en la ruta de clases de Spark.

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 necesita control total sobre el contenido de la imagen base (por ejemplo, para cumplir los estrictos requisitos de tamaño de imagen, cadena de suministro o cumplimiento), puede crear un equivalente mínimo de databricksruntime/environment:v5-standard desde cero en lugar de ampliarla.

Advertencia

La creación desde cero es una opción avanzada. Usted asume la responsabilidad de realizar el seguimiento de los cambios en origen de la imagen v5-standard, incluidas las versiones fijadas de Python, los parches de seguridad, las herramientas de la plataforma y los archivos requeridos por la plataforma en /databricks/ y /etc/environment. En su lugar, Databricks recomienda extender databricksruntime/environment:v5-standard como se mostró anteriormente en el paso 2.

Databricks proporciona un Dockerfile de referencia y requirements.txt que recrean el entorno esencial de Python de v5-standard. Descargue ambos archivos en el mismo directorio antes de compilar:

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:

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_mode en DATA_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.3 o superior.

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

  1. En la página Crear recurso de proceso, asegúrese de que el Modo de acceso esté establecido en Standard y de que Databricks Runtime esté establecido en 18.3 o una versión superior.

  2. En Advanced, seleccione la pestaña Docker.

  3. Seleccione Usar su propio contenedor de Docker.

  4. 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:v5-standard)
    Azure Container Registry (Registro de Contenedores de Azure) <your-registry-name>.azurecr.io/<repository-name>:<tag>
  5. 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 recursos de proceso, 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

A continuación, se muestra una llamada a la API de ejemplo que crea una instancia de computación estándar con su imagen personalizada. Asegúrese de que data_security_mode esté configurado en DATA_SECURITY_MODE_STANDARD y de que spark_version esté configurado en 18.3.x-scala2.13 o superior.

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.3.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 utiliza al iniciar recursos de computación 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 recurso de cómputo falla 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:

  1. Reemplace la FROM línea del Dockerfile por FROM databricksruntime/environment:v5-standard (o v5-standard-arm para AWS Graviton).
  2. 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.
  3. Instale paquetes de Python en /databricks/python3 en 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.
  4. Actualice la configuración de proceso para usar el modo de acceso estándar y Databricks Runtime 18.3 o superior.
  5. 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:

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 Paso 1: Habilitar Databricks Container Services para la computación estándar.