Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Databricks Container Services pour le calcul standard est en version bêta. Un administrateur d’espace de travail doit activer cette fonctionnalité à partir de la page Aperçus de l’espace de travail. Il s’agit d’un service distinct de Databricks Container Services pour le calcul dédié, qui est généralement disponible.
Databricks Container Services pour le calcul standard vous permet de spécifier une image Docker lorsque vous créez un calcul standard, ce qui vous donne accès à des conteneurs personnalisés dans des environnements de calcul partagés. Votre image Docker est la seule définition de l’environnement de charge de travail. Vous pouvez donc reproduire l’environnement distant localement pour obtenir des résultats cohérents dans le développement et la production.
En outre, pour vous aider à créer votre image personnalisée, Azure Databricks fournit une image de base alignée sur versions d’environnement sans serveur que vous pouvez étendre pour répondre à vos besoins.
Requirements
Pour utiliser Databricks Container Services pour le calcul standard :
- La ressource de calcul doit exécuter Databricks Runtime 18.3 ou version ultérieure et utiliser le mode d’accès Standard .
- Vous devez disposer d’un démon Docker récent avec la
dockercommande disponible sur votrePATH.
Étape 1 : Activer Databricks Container Services pour le calcul standard
Pour utiliser Databricks Container Services pour le calcul standard, un administrateur d’espace de travail doit activer la fonctionnalité à partir de la page Aperçus :
- Connectez-vous à votre espace de travail Azure Databricks en tant qu’administrateur.
- Dans le menu utilisateur en haut à droite, cliquez sur Aperçus.
- Recherchez DCS pour le calcul standard et activez-le.
Étape 2 : Générer votre image personnalisée
Ces instructions vous montrent comment créer une image personnalisée en étendant une image de base fournie par Databricks (recommandé). L’image de base contient les dépendances requises pour lancer vos charges de travail, telles que Ubuntu, Python et JDK. Vous pouvez récupérer databricksruntime/environment:v5-standard, y superposer vos packages et bénéficier des mises à jour continues et des correctifs de sécurité gérés par Databricks.
Si vous souhaitez générer une image de base minimale à partir de zéro, consultez Référence : créer une image de base minimale à partir de zéro.
Étape 2a : extraire l’image de base
Pour extraire l’image de base, exécutez :
docker pull databricksruntime/environment:v5-standard
Étape 2b : Écrire un fichier Dockerfile qui étend l’image de base
Installez des packages de Python personnalisés dans l'environnement virtuel /databricks/python3 de l'image de base. Il s’agit de l’environnement virtuel système qui lance vos charges de travail.
FROM databricksruntime/environment:v5-standard
RUN /databricks/python3/bin/python -m pip install <your python package>
L’exemple suivant montre comment installer un package à partir d’un dépôt privé.
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
Vous pouvez utiliser n’importe quelle instruction Dockerfile standard (par exemple, RUN, ENV, WORKDIR). COPY Les instructions suivantes sont ignorées en raison de la façon dont Azure Databricks lance votre charge de travail :
USERCMDENTRYPOINTEXPOSEHEALTHCHECKSHELLSTOPSIGNAL
Note
Pour les charges de travail Scala, copiez vos fichiers JAR dans le répertoire /scala-jars/user de l’image et modifiez chmod 0644 afin que l’utilisateur du sandbox puisse les lire. Azure Databricks charge les fichiers JAR depuis ce chemin d’accès dans le classpath Spark.
Étape 2c : Générer l’image
Pour générer l’image, exécutez :
docker build -f <your-dockerfile> -t <registry-url>/<project>[/<repo>]:<tag> .
Avertissement
Testez soigneusement votre image personnalisée sur un calcul Azure Databricks. Une image qui fonctionne sur une machine locale ou de build peut ne pas démarrer, désactiver silencieusement les fonctionnalités ou cesser de fonctionner lors du lancement sur Azure Databricks.
Référence : créer une image de base minimale à partir de zéro
Si vous avez besoin d’un contrôle total sur le contenu de votre image de base (par exemple, pour répondre à des exigences strictes en matière de taille d’image, de chaîne d’approvisionnement ou de conformité), vous pouvez créer un équivalent minimal de databricksruntime/environment:v5-standard zéro au lieu de l’étendre.
Avertissement
La création à partir de zéro est une option avancée. Vous êtes responsable du suivi des modifications en amont apportées à l’image v5-standard, y compris les épingles Python, les correctifs de sécurité, les outils de plateforme et les fichiers requis par la plateforme sous /databricks/ et /etc/environment. Au lieu de cela, Databricks recommande d’étendre databricksruntime/environment:v5-standard comme indiqué précédemment à l’étape 2.
Databricks fournit un fichier Dockerfile de référence et requirements.txt qui recréent l’environnement Python essentiel de v5-standard. Téléchargez les deux fichiers dans le même répertoire avant de générer :
-
Dockerfile (enregistrer sous
Dockerfile, sans l’extension.txt) - requirements.txt
Pour générer l’image, exécutez :
docker build -t <your-registry>/<repo>:<tag> .
Si votre hôte de compilation ne peut pas atteindre https://pypi.org, redéfinissez l’index de pip lors de la compilation en exécutant :
docker build --build-arg PIP_INDEX_URL=https://your-mirror/simple -t <your-registry>/<repo>:<tag> .
Avant de passer à l’étape suivante, vérifiez que les packages organisés Python importent correctement en exécutant :
docker run --rm --cpus 2 <your-registry>/<repo>:<tag> \
/databricks/python3/bin/python -c \
"import pandas, numpy, pyarrow, mlflow, databricks.connect; print('OK')"
Étape 3 : Envoyer (push) votre image à un registre
Ensuite, envoyez votre image à un registre Docker. Databricks Container Services prend en charge les mêmes registres sur le calcul standard et dédié :
- Docker Hub sans authentification ou authentification de base.
- Azure Container Registry avec l’authentification de base.
D’autres registres qui ne prennent pas en charge l’authentification ou l’authentification de base doivent également fonctionner. L’authentification de base utilise le nom d’utilisateur et le mot de passe de votre registre.
Pour optimiser les performances d’extraction d’images, utilisez un registre dans le même cloud et la même région que votre espace de travail Azure Databricks.
echo "$REGISTRY_PASSWORD" | docker login -u <registry-username> --password-stdin <registry-url>
docker push <registry-url>/<project>[/<repo>]:<tag>
Note
Si vous utilisez Docker Hub, vérifiez que vos limites de taux prennent en charge le calcul que vous prévoyez de lancer dans une période de six heures. Consultez la documentation Docker pour plus d’informations. Si cette limite est dépassée, les demandes retournent 429 Too Many Requests.
Étape 4 : Lancer votre calcul
Vous pouvez lancer le calcul qui utilise votre image personnalisée à l’aide de l’interface utilisateur ou de l’API. Les besoins suivants doivent être respectés :
- Le mode d’accès au calcul doit être Standard (dans l’API, défini
data_security_modesurDATA_SECURITY_MODE_STANDARD). Si la ressource de calcul est définie sur le mode d’accès Dedicated, une autre version de Databricks Container Services est utilisée ; celle-ci nécessite une image de base différente et ne pourra pas se lancer avec l’image de base que vous avez créée. - La version databricks Runtime doit être 18.3 ou ultérieure.
Note
Pour lancer sur un pool d’instances, le pool doit être créé avec preloaded_docker_images défini, et le docker_image du cluster doit correspondre. Consultez Utiliser Databricks Container Services avec un pool d’instances avant le lancement.
Lancer votre capacité de calcul à l’aide de l’interface utilisateur
Sur la page Créer un calcul, vérifiez que le mode d’accès est défini sur Standard et que le runtime Databricks est défini sur 18.3 ou une version ultérieure.
Sous Advanced, sélectionnez l’onglet Docker.
Sélectionnez Utiliser votre propre conteneur Docker.
Dans le champ URL de l’image Docker, entrez votre image personnalisée.
Registre Format de l’étiquette Docker Hub <organization>/<repository>:<tag>(Par exemple :databricksruntime/environment:v5-standard)Azure Container Registry (Service d'enregistrement de conteneurs Azure) <your-registry-name>.azurecr.io/<repository-name>:<tag>Sélectionnez le type d'authentification. Consultez Authentification des images Docker.
Note
Si vous ne voyez pas les paramètres Docker lorsque vous créez un calcul, Databricks Container Services peut ne pas être activé dans votre espace de travail. Un administrateur d’espace de travail doit l’activer avant que n’importe quel utilisateur puisse spécifier une image Docker. Consultez l’étape 1 : Activer Databricks Container Services pour le calcul standard.
Lancer votre capacité de calcul à l’aide de l’API
Voici un exemple d’appel d’API qui crée un calcul standard avec votre image personnalisée. Assurez-vous que data_security_mode est défini sur DATA_SECURITY_MODE_STANDARD et que spark_version est défini sur 18.3.x-scala2.13 ou plus.
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"
}'
Authentification des images Docker
Les exigences d’authentification dépendent de votre type d’image Docker. Vous pouvez également utiliser des secrets pour stocker les noms d’utilisateur d’authentification et les mots de passe. Consultez Utiliser des secrets pour l’authentification.
- Pour les images Docker publiques, vous n’avez pas besoin d’inclure d’informations d’authentification. Dans l'interface utilisateur, réglez l'authentification sur par défaut . Pour l’appel d’API, n’incluez pas les champs
basic_auth. - Pour les images Docker privées, authentifiez-vous à l’aide d’un identifiant de principal de service et d’un mot de passe ou d'autres secrets applicables, comme nom d'utilisateur et mot de passe.
- Pour Azure Container Registry, authentifiez-vous à l’aide d’un ID de principal de service et d’un mot de passe (ou secrets applicables) comme nom d’utilisateur et mot de passe. Pour plus d’informations sur la création du principal de service, consultez la documentation Authentification Azure Container Registry avec des principaux de service.
Utiliser des secrets pour l’authentification
Databricks Container Services prend en charge l’utilisation de secrets pour l’authentification. Lorsque vous créez votre ressource de calcul dans l’interface utilisateur, utilisez le champ d’authentification pour sélectionner nom d’utilisateur et mot de passe, puis au lieu d’entrer votre nom d’utilisateur ou mot de passe en texte brut, entrez vos secrets au format {{secrets/<scope-name>/<dcs-secret>}}. Si vous utilisez l’API, entrez les secrets dans les champs basic_auth.
Pour plus d’informations sur la création de secrets, consultez Gestion des secrets.
Utiliser Databricks Container Services avec un pool d’instances
Pour utiliser Databricks Container Services avec un pool d’instances, vous devez créer le pool à l’aide de l’API Pools d’instances, et non l’interface utilisateur.
Le pool doit être créé avec des images Docker préchargées. Cela réchauffe les instances inactives avec votre image personnalisée afin que les charges de travail démarrent plus rapidement. Définissez le preloaded_docker_images champ sur la demande avec les mêmes références d’image et l’authentification que vous utilisez lors du lancement du calcul directement. Le champ est une liste. Un pool unique peut donc précharger plusieurs images.
Le pool et ses ressources de calcul jointes doivent accepter si Docker est en cours d’utilisation. Si un pool n’a preloaded_docker_images pas défini, vous ne pouvez pas lancer le calcul Databricks Container Services sur celui-ci. Créez un nouveau groupe avec l’option preloaded_docker_images activée.
Pour les pools créés avec preloaded_docker_images, toute ressource de calcul lancée sur le pool doit fournir une correspondance docker_image dans sa demande de création. Sinon, la création de calcul échoue avec 'docker_image' must be provided for cluster created with instance pool: <pool-id>.
Migrer à partir de Databricks Container Services d’origine
Databricks Container Services pour le calcul standard est un service différent de databricks Container Services d’origine pour le calcul dédié. Cette fonctionnalité présente les différences suivantes :
- Les charges de travail s’exécutent via le protocole Spark Connect .
- Les scripts init ne modifient pas l'environnement Python de votre charge de travail. Vous devez installer toutes les dépendances Python dans l’image Docker. Vous pouvez continuer à utiliser des scripts init pour les applications qui consomment des données à partir de Spark, telles que des agents Datadog ou Kafka.
Pour migrer à partir de Databricks Container Services d’origine pour le calcul dédié, régénérez votre image personnalisée sur Databricks Container Services pour le calcul standard et mettez à jour votre configuration de calcul :
- Remplacez la
FROMligne dans votre fichier DockerfileFROM databricksruntime/environment:v5-standardpar (ouv5-standard-armpour AWS Graviton). - Transférez vos instructions Dockerfile vers la nouvelle image de base. Les instructions Dockerfile standard sont prises en charge, avec les exceptions répertoriées à l’étape 2 : Générer votre image personnalisée.
- Installez des paquets Python dans
/databricks/python3au lieu de tout autre environnement virtuel. Charges de travail (blocs-notes, travaux de roue Python, travaux de script Python) lues à partir de ce chemin d’accès. - Mettez à jour votre configuration de calcul pour utiliser le mode d’accès standard et Databricks Runtime 18.3 ou version ultérieure.
- Déplacez n’importe quelle configuration d’environnement Python qu’un script init a précédemment effectué dans le fichier Dockerfile.
Limitations
Outre les limitations de calcul standard, Databricks Container Services pour le calcul standard présente les limitations suivantes :
- Les bibliothèques délimitées au calcul ne sont pas prises en charge.
- Les dépôts de paquets privés ne sont pas pris en charge.
- Databricks Runtime pour Machine Learning n’est pas pris en charge.
- Pour lancer le calcul standard avec Databricks Container Services à l’aide d’un pool d’instances, le pool doit être créé avec
preloaded_docker_imagesdéfini. Consultez Utiliser Databricks Container Services avec un pool d’instances.
Troubleshooting
Si l’onglet Docker n’apparaît pas sous Avancé lorsque vous créez un calcul, Databricks Container Services n’est pas activé pour votre espace de travail. Un administrateur d’espace de travail doit l’activer dans l’espace de travail avant que n’importe quel utilisateur puisse spécifier une image Docker. Consultez l’étape 1 : Activer Databricks Container Services pour le calcul standard.