Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Important
Databricks-Containerdienste für Standardberechnungen befinden sich in der Betaversion. Ein Arbeitsbereichsadministrator muss dieses Feature über die Arbeitsbereichvorschauseite aktivieren. Dies ist ein anderer Dienst als Databricks Container Services für dedizierte Rechenressourcen, der allgemein verfügbar ist.
Mit Databricks-Containerdiensten für standard compute können Sie ein Docker-Image angeben, wenn Sie standard compute erstellen, sodass Sie auf benutzerdefinierte Container in gemeinsam genutzten Computeumgebungen zugreifen können. Ihr Docker-Image ist die einzige Definition der Workloadumgebung, sodass Sie die Remoteumgebung lokal reproduzieren können, um konsistente Ergebnisse in der Gesamten Entwicklung und Produktion zu erzielen.
Ihr benutzerdefiniertes Image wird für Sandkastencontainer verwendet, die Benutzercode ausführen, z. B. Python REPL-Befehle und Python UDFs. Das Spark-Modul wird in einer vom Databricks verwalteten Umgebung ausgeführt, und Spark-Abfragen werden zwischen den Sandkastencontainern und dem Spark-Modul mithilfe von Spark Connect gesendet.
Zusätzlich bietet Azure Databricks Basisimages, die auf serverlose Umgebungsversionen abgestimmt sind, um Ihr individuelles Image zu erstellen, die Sie an Ihre Anforderungen anpassen können.
Requirements
So verwenden Sie Databricks-Containerdienste für die Standardberechnung:
- Die Computeressource muss Databricks Runtime 18 LTS oder höher ausführen und den Standardzugriffsmodus verwenden.
- Sie müssen über einen aktuellen Docker-Daemon verfügen, der den
dockerBefehl auf IhremPATHServer zur Verfügung hat.
Note
Achten Sie darauf, 18 LTS auszuwählen. Wählen Sie nicht 18.0, 18.1 oder 18.2 aus.
Verwenden Sie die folgende Tabelle, um die minimale Databricks Runtime-Version zu identifizieren, die von jedem Basisabbild benötigt wird:
| Basisbild | Minimale Databricks-Laufzeit | Mindest-API spark_version |
Serverlose Umgebungsversion |
|---|---|---|---|
databricksruntime/environment:v6-standard |
19 | 19.x-scala2.13 |
6 |
databricksruntime/environment:v5-standard |
18. Leutnant | 18.3.x-scala2.13 |
5 |
Schritt 1: Aktivieren von Databricks-Containerdiensten für die Standardberechnung
Um Databricks-Containerdienste für die Standardberechnung zu verwenden, muss ein Arbeitsbereichsadministrator das Feature über die Vorschauseite aktivieren:
- Melden Sie sich als Administrator bei Ihrem Azure Databricks-Arbeitsbereich an.
- Klicken Sie im Benutzermenü oben rechts auf "Vorschauen".
- Suchen Sie DCS für die Standardberechnung , und aktivieren Sie sie.
Schritt 2: Erstellen Ihres benutzerdefinierten Images
In diesen Anweisungen wird gezeigt, wie Sie ein benutzerdefiniertes Image erstellen, indem Sie ein databricks-bereitgestelltes Basisimage erweitern (empfohlen). Das Basisimage enthält die Abhängigkeiten, die zum Starten Ihrer Workloads erforderlich sind, z. B. Ubuntu, Python und JDK. Wählen Sie ein Basisimage aus, dessen minimale Databricks-Runtime-Anforderung von Ihren Compute-Ressourcen erfüllt wird, und bauen Sie Ihre Anpassungen darauf auf. Baue dein Image regelmäßig neu auf, um die neuesten Patches aus dem Basisimage zu übernehmen. In den Beispielen in diesem Artikel wird v6-standard mit Databricks Runtime 19 verwendet.
Wenn Sie ein minimales Basisimage von Grund auf neu erstellen möchten, lesen Sie "Referenz: Erstellen eines minimalen Basisimages von Grund auf neu".
Schritt 2a: Ziehen des Basisimages
Um das Basis-Image herunterzuladen, führen Sie Folgendes aus:
docker pull databricksruntime/environment:v6-standard
Schritt 2b: Schreiben einer Dockerfile-Datei, die das Basisimage erweitert
Installieren Sie benutzerdefinierte Python Pakete in der /databricks/python3 virtuellen Umgebung des Basisimages. Dies ist die virtuelle Systemumgebung, die Ihre Workloads startet.
FROM databricksruntime/environment:v6-standard
RUN /databricks/python3/bin/python -m pip install <your python package>
Das folgende Beispiel zeigt, wie man ein Paket aus einem benutzerdefinierten Paketindex installiert, ohne die Index-URL in der Laufzeitumgebung zu behalten. Überschreiben Sie PIP_INDEX_URL während des Buildvorgangs, wenn Sie einen privaten Index verwenden.
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
Sie können jede Standardanweisung in einem Dockerfile verwenden (zum Beispiel RUN, ENV, WORKDIR, COPY). Die folgenden Anweisungen werden ignoriert, da Azure Databricks Ihre Workload startet:
USERCMDENTRYPOINTEXPOSEHEALTHCHECKSHELLSTOPSIGNAL
Note
Kopieren Sie für Scala-Workloads Ihre JAR-Dateien in das /scala-jars/user Verzeichnis im Image und chmod 0644 diese, damit der Sandkastenbenutzer sie lesen kann. Azure Databricks lädt JARs aus diesem Pfad in die Scala REPL-Klassenpfade und Scala UDF-Klassenpfade.
Schritt 2c: Erstellen des Images
Führen Sie zum Erstellen des Images Folgendes aus:
docker build -f <your-dockerfile> -t <registry-url>/<project>[/<repo>]:<tag> .
Warning
Testen Sie Ihr benutzerdefiniertes Bild gründlich auf einer Azure Databricks Compute. Ein Image, das auf einem lokalen Rechner oder Buildsystem funktioniert, startet möglicherweise nicht, deaktiviert unbemerkt Funktionen oder funktioniert nicht mehr, wenn es in Azure Databricks gestartet wird.
Referenz: Erstellung eines minimalen Basis-Images von Grund auf
Wenn Sie vollständige Kontrolle über den Inhalt Ihres Basisimages benötigen (zum Beispiel um strenge Imagegrößen-, Lieferketten- oder Compliance-Anforderungen zu erfüllen), können Sie ein minimales, auf Python fokussiertes Image von Grund auf neu erstellen, anstatt es zu erweiterndatabricksruntime/environment:v6-standard.
Die von Grund auf neu erstellte Referenz rekonstruiert nur die wesentliche Python-Umgebung. Es enthält weder das JDK noch andere nicht-Python-Laufzeitkomponenten aus v6-standard und unterstützt keine Scala-Workloads. Erweitern Sie das von Databricks bereitgestellte Basisimage, wenn Ihre Workloads diese Komponenten benötigen.
Warning
Das Erstellen von Grund auf neu ist eine Option für Fortgeschrittene. Du übernimmst die Verantwortung für die Nachverfolgung von Upstream-Änderungen am v6-standard Image, einschließlich Python-Pins, Sicherheitspatches, Plattform-Tools und der plattformgeforderten Dateien unter /databricks/ und /etc/environment. Databricks empfiehlt die Erweiterung databricksruntime/environment:v6-standard , wie bereits in Schritt 2 gezeigt.
Databricks stellt Referenzdateien bereit, die die wesentliche Python-Umgebung jedes Basisimages nachbilden. Lade die Dockerfile und die Abhängigkeitsdatei für dein Basisimage vor dem Erstellen in dasselbe Verzeichnis herunter. Speichern Dockerfile.txt als Dockerfile.
| Basisbild | Dockerfile | Abhängigkeitsdatei |
|---|---|---|
v6-standard |
Dockerfile.txt | pyproject.toml |
v5-standard |
Dockerfile.txt | requirements.txt |
Führen Sie zum Erstellen des Images Folgendes aus:
docker build -t <your-registry>/<repo>:<tag> .
Wenn Ihr Build-Host https://pypi.org nicht erreichen kann, überschreiben Sie den pip-Index während des Builds, indem Sie Folgendes ausführen:
docker build --build-arg PIP_INDEX_URL=https://your-mirror/simple -t <your-registry>/<repo>:<tag> .
Bevor Sie mit dem nächsten Schritt fortfahren, überprüfen Sie, ob die kuratierten Python Pakete sauber importiert werden, indem Sie Folgendes ausführen:
docker run --rm --cpus 2 <your-registry>/<repo>:<tag> \
/databricks/python3/bin/python -c \
"import pandas, numpy, pyarrow, mlflow, databricks.connect; print('OK')"
Schritt 3: Übertragen Ihres Images in eine Registrierung
Als Nächstes übertragen Sie Ihr Image in eine Docker-Registry. Databricks Container Services unterstützt dieselben Registrierungen sowohl für Standard- als auch für dedizierte Compute:
- Docker Hub ohne Authentifizierung oder Standardauthentifizierung.
- Azure Container Registry mit Standardauthentifizierung.
Andere Registrierungen, die keine Authentifizierung oder Standardauthentifizierung unterstützen, sollten ebenfalls funktionieren. Die Standardauthentifizierung verwendet Ihren Registrierungsbenutzernamen und Ihr Kennwort.
Um eine optimale Bild-Pull-Leistung zu erzielen, verwenden Sie eine Registrierung in derselben Cloud und Region wie Ihr Azure Databricks Arbeitsbereich.
echo "$REGISTRY_PASSWORD" | docker login -u <registry-username> --password-stdin <registry-url>
docker push <registry-url>/<project>[/<repo>]:<tag>
Note
Wenn Sie Docker Hub verwenden, überprüfen Sie, ob Ihre Ratelimits die Berechnung berücksichtigen, die Sie in einem Zeitraum von sechs Stunden starten möchten. Weitere Informationen finden Sie in der Dokumentation zu Docker. Wenn dieser Grenzwert überschritten wird, geben Anfragen 429 Too Many Requests zurück.
Schritt 4: Starten der Berechnung
Sie können Rechenressourcen, die Ihr benutzerdefiniertes Image verwenden, über die Benutzeroberfläche oder die API starten. Die folgenden Anforderungen müssen erfüllt sein:
- Der Berechnungszugriffsmodus muss Standard sein (in der API
data_security_modeaufDATA_SECURITY_MODE_STANDARDfestlegen). Wenn die Berechnung auf den dedizierten Zugriffsmodus festgelegt ist, wird eine andere Version von Databricks Container Services verwendet, die ein anderes Basisimage erwartet und mit dem erstellten Basisimage nicht gestartet wird. - Die Databricks-Runtime-Version muss 18 LTS oder höher sein. Achten Sie darauf, 18 LTS, nicht 18.0, 18.1 oder 18.2 auszuwählen.
- Die Databricks Runtime-Version muss die Mindestanforderung für Ihr Basisimage erfüllen.
Note
Für den Start mit einem Instanzpool muss der Pool mit preloaded_docker_images erstellt werden, und docker_image des Clusters muss übereinstimmen. Siehe Verwenden von Databricks-Containerdiensten mit einem Instanzpool vor dem Start.
Starten der Berechnung mithilfe der Benutzeroberfläche
Auf der Seite Create Compute stellen Sie den Access-Modus auf Standard und wählen Sie eine Databricks-Laufzeit aus, die die Mindestanforderungen für Ihr Basisimage erfüllt.
Wählen Sie unter "Erweitert" die Registerkarte "Docker " aus.
Klicken Sie auf Use your own Docker container (Eigenen Docker-Container verwenden).
Geben Sie im Feld "Docker Image-URL " Ihr benutzerdefiniertes Image ein.
Registratur Tagformat Docker Hub <organization>/<repository>:<tag>(zum Beispiel:databricksruntime/environment:v6-standard)Azure Container Registry (Registrierungsdienst für Container von Azure) <your-registry-name>.azurecr.io/<repository-name>:<tag>Wählen Sie den Authentifizierungstyp aus. Siehe Docker-Imageauthentifizierung.
Note
Wenn beim Erstellen von Compute die Docker-Einstellungen nicht angezeigt werden, sind Databricks Container Services für Ihren Arbeitsbereich möglicherweise nicht aktiviert. Ein Arbeitsbereichsadministrator muss ihn aktivieren, bevor ein Benutzer ein Docker-Image angeben kann. Siehe Schritt 1: Aktivieren von Databricks-Containerdiensten für die Standardberechnung.
Starten der Berechnung mithilfe der API
Der folgende beispielhafte API-Aufruf erzeugt Standard-Compute mit einem benutzerdefinierten v6-standard Image auf Databricks Runtime 19. Setze data_security_mode auf DATA_SECURITY_MODE_STANDARD. Die spark_version muss die Mindestanforderung für Ihr Basis-Image erfüllen.
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"
}'
Docker-Imageauthentifizierung
Die Authentifizierungsanforderungen hängen vom Docker-Imagetyp ab. Sie können auch geheime Schlüssel verwenden, um Authentifizierungsbenutzernamen und Kennwörter zu speichern. Weitere Informationen finden Sie unter Verwenden von geheimen Schlüsseln für die Authentifizierung.
- Für öffentliche Docker-Images müssen Sie keine Authentifizierungsinformationen einschließen. Legen Sie in der Benutzeroberfläche die Authentifizierung auf "Standard" fest. Für den API-Aufruf .
- Für private Docker-Images authentifizieren Sie sich mit einer ID des Dienstprinzipals und einem Kennwort (oder anwendbaren Secrets) als Benutzernamen und Kennwort.
- Für Azure Container Registry authentifizieren Sie sich mit einer ID des Dienstprinzipals und einem Kennwort (oder anwendbaren Secrets) als Benutzernamen und Kennwort. Weitere Informationen zum Erstellen des Dienstprinzipals finden Sie unter Azure Container Registry-Authentifizierung mit Dienstprinzipalen.
Verwenden von geheimen Schlüsseln für die Authentifizierung
Der Databricks-Containerdienst unterstützt die Verwendung geheimer Schlüssel für die Authentifizierung. Wenn Sie Ihre Computerressource in der Benutzeroberfläche erstellen, verwenden Sie das Feld Authentifizierung, um Benutzername und Kennwort auszuwählen. Anstatt Ihren Benutzernamen oder Ihr Kennwort im Klartext einzugeben, geben Sie Ihre Geheimnisse mithilfe des {{secrets/<scope-name>/<dcs-secret>}}-Formats ein. Wenn Sie die API verwenden, geben Sie die geheimen Schlüssel in die basic_auth Felder ein.
Informationen zum Erstellen geheimer Schlüssel finden Sie unter "Geheime Verwaltung".
Verwenden Sie Databricks-Containerdienste mit einem Instanzpool
Um Databricks-Containerdienste mit einem Instanzpool zu verwenden, müssen Sie den Pool mit der Instanzpool-API und nicht der Benutzeroberfläche erstellen.
Der Pool muss mit vorinstallierten Docker-Images erstellt werden. Dadurch werden inaktive Instanzen mit Ihrem benutzerdefinierten Abbild vorgewärmt, damit Workloads schneller starten. Legen Sie das preloaded_docker_images Feld für die Anforderung mit denselben Bildverweisen und der Authentifizierung fest, die Sie beim direkten Starten der Berechnung verwenden. Das Feld ist eine Liste, sodass ein einzelner Pool mehrere Bilder vorab laden kann.
Der Pool und seine angefügten Computeressourcen müssen sich darüber einigen, ob Docker verwendet wird. Wenn für einen Pool preloaded_docker_images nicht festgelegt ist, können Sie dafür kein Databricks Container Services-Compute starten. Erstellen Sie einen neuen Pool mit festgelegtem preloaded_docker_images.
Für Pools, die mit preloaded_docker_images erstellt wurden, muss jede Rechenressource, die für den Pool erstellt wird, in ihrer Erstellungsanforderung ein entsprechendes docker_image angeben. Andernfalls schlägt das Erstellen von Compute-Ressourcen mit 'docker_image' must be provided for cluster created with instance pool: <pool-id> fehl.
Migrieren von den ursprünglichen Databricks-Containerdiensten
Databricks Container Services für Standard-Compute ist ein anderer Dienst als der ursprüngliche Databricks Container Services für dedizierten Compute. Dieses Feature weist die folgenden Unterschiede auf:
- Workloads werden über das Spark Connect-Protokoll ausgeführt.
- Init-Skripts ändern die Python Umgebung Ihrer Workload nicht. Sie müssen alle Python Abhängigkeiten im Docker-Image installieren. Sie können init-Skripts weiterhin für Anwendungen verwenden, die Daten von Spark nutzen, z. B. Datadog oder Kafka-Agents.
Um von den ursprünglichen Databricks Container Services für dedizierten Compute zu migrieren, erstellen Sie Ihr benutzerdefiniertes Image auf den Databricks Container Services für Standard-Compute neu und aktualisieren Sie Ihre Compute-Konfiguration:
- Ersetzen Sie die
FROMZeile in Ihrer Dockerfile durch ein Basisimage, dessen Mindestanforderungen an die Databricks-Laufzeit von Ihrer Ziellaufzeit erfüllt werden. Für AWS Graviton verwenden Sie die entsprechende-armBildvariante. - Portieren Sie Ihre Dockerfile-Anweisungen zum neuen Basisimage. Standardanweisungen für Dockerfiles werden unterstützt, mit den in Schritt 2: Erstellen Ihres benutzerdefinierten Images aufgeführten Ausnahmen.
- Installieren Sie Python-Pakete in
/databricks/python3anstelle eines anderen virtuellen Environments. Workloads (Notebooks, Python Radaufträge, Python Skriptaufträge) lesen aus diesem Pfad. - Aktualisieren Sie Ihre Compute-Konfiguration, um den Standardzugriffsmodus zu verwenden, und wählen Sie eine Databricks Runtime-Version aus, die die Mindestanforderungen für Ihr Basisimage erfüllt.
- Verlagern Sie jede Einrichtung der Python-Umgebung, die zuvor von einem Init-Skript vorgenommen wurde, in das Dockerfile.
Einschränkungen
Zusätzlich zu den standardmäßigen Computebeschränkungen weist Databricks Container Services für die Standardberechnung die folgenden Einschränkungen auf:
- Bibliotheken für Compute-Ressourcen werden nicht unterstützt.
- Private Paketrepositorys werden nicht unterstützt.
- Databricks Runtime für Machine Learning wird nicht unterstützt.
- Um die Standardberechnung mit Databricks-Containerdiensten für einen Instanzpool zu starten, muss der Pool mit
preloaded_docker_imagesfestgelegt erstellt werden. Siehe Verwenden von Databricks-Containerdiensten mit einem Instanzpool.
Troubleshooting
Wenn die Docker-Registerkarte beim Erstellen von Compute nicht unter Erweitert angezeigt wird, ist Databricks Container Services für Ihren Arbeitsbereich nicht aktiviert. Ein Arbeitsbereichsadministrator muss ihn im Arbeitsbereich aktivieren, bevor ein Benutzer ein Docker-Image angeben kann. Siehe "Containerdienste aktivieren".
Die Registerkarte Docker kann auch mithilfe einer Rechenrichtlinie ausgeblendet werden, die das docker_image.url-Attribut ausblendet. Wenn das Feature aktiviert ist, die Registerkarte aber noch fehlt, bitten Sie einen Arbeitsbereichsadministrator, zu überprüfen, ob die Ihnen zugewiesene Richtlinie dieses Attribut ausblendet. Siehe unterstützte Attribute.