Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Important
Databricks Container Services voor standaard berekenen bevindt zich in bètaversie. Een werkruimtebeheerder moet deze functie inschakelen vanaf de pagina Previews van de werkruimte. Dit is een afzonderlijke service van Databricks Container Services voor toegewezen rekenkracht, die algemeen beschikbaar is.
Met Databricks Container Services voor standaard compute kunt u een Docker-image opgeven wanneer u standaard compute aanmaakt, waardoor u toegang krijgt tot aangepaste containers in gedeelde compute-omgevingen. Je Docker-image is de enige definitie van de workloadomgeving, zodat je de externe omgeving lokaal kunt reproduceren voor consistente resultaten in zowel ontwikkeling als productie.
Daarnaast biedt Azure Databricks, om u te helpen uw aangepaste image te bouwen, een basisimage die is afgestemd op versies van serverloze omgevingen en die u naar wens kunt uitbreiden.
Requirements
Databricks Container Services gebruiken voor standaard berekenen:
- De rekenresource moet Databricks Runtime 18.3 of hoger uitvoeren en de standaardtoegangsmodus gebruiken.
- U moet een recente Docker-daemon hebben met de
dockeropdracht die beschikbaar is op uwPATH.
Stap 1: Databricks Container Services inschakelen voor standaard berekenen
Als u Databricks Container Services wilt gebruiken voor standaard berekenen, moet een werkruimtebeheerder de functie inschakelen op de pagina Previews :
- Meld u als beheerder aan bij uw Azure Databricks-werkruimte.
- Klik in het gebruikersmenu in de rechterbovenhoek op Voorbeeldweergaven.
- Zoek DCS voor standaard berekenen en schakel deze in.
Stap 2: Maak je aangepaste image
In deze instructies wordt uitgelegd hoe u een aangepaste image maakt door een door Databricks geleverd basisimage uit te breiden (aanbevolen). De basisinstallatiekopie bevat de afhankelijkheden die nodig zijn voor het starten van uw workloads, zoals Ubuntu, Python en JDK. U kunt databricksruntime/environment:v5-standard ophalen, uw pakketten daarbovenop plaatsen en profiteren van door Databricks beheerde, doorlopende updates en beveiligingspatches.
Als u een minimale basisimage vanaf nul wilt bouwen, raadpleegt u Naslagwerk: een minimale basisimage vanaf nul bouwen.
Stap 2a: De basisimage downloaden
Als u de basisimage wilt downloaden, voert u het volgende uit:
docker pull databricksruntime/environment:v5-standard
Stap 2b: Schrijf een Dockerfile die voortbouwt op de basisimage
Installeer aangepaste Python-pakketten in de /databricks/python3-virtuele omgeving van de basisimage. Dit is de virtuele systeemomgeving waarmee uw workloads worden gestart.
FROM databricksruntime/environment:v5-standard
RUN /databricks/python3/bin/python -m pip install <your python package>
In het volgende voorbeeld ziet u hoe u een pakket installeert vanuit een privéopslagplaats.
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
U kunt elke standaard Dockerfile-instructie gebruiken (bijvoorbeeld RUN, ENV, WORKDIR). COPY De volgende instructies worden genegeerd vanwege de wijze waarop Azure Databricks uw workload start:
USERCMDENTRYPOINTEXPOSEHEALTHCHECKSHELLSTOPSIGNAL
Note
Kopieer uw JAR-bestanden voor Scala-workloads naar de map /scala-jars/user in de image en chmod 0644 ze zodat de sandboxgebruiker ze kan lezen. Azure Databricks JAR's van dit pad naar het Spark-klassepad laadt.
Stap 2c: de image bouwen
Voer deze opdracht uit om de image te bouwen:
docker build -f <your-dockerfile> -t <registry-url>/<project>[/<repo>]:<tag> .
Warning
Test uw aangepaste image grondig op een Azure Databricks-computeresource. Een image die werkt op een lokale machine of buildmachine, kan mogelijk niet starten, zonder waarschuwing functies uitschakelen of stoppen met werken zodra deze wordt gestart op Azure Databricks.
Referentie: een minimale basisimage vanaf nul bouwen
Als u volledige controle nodig hebt over de inhoud van uw basisimage (bijvoorbeeld om te voldoen aan strikte vereisten voor imagegrootte, toeleveringsketen of naleving), kunt u een minimaal equivalent van databricksruntime/environment:v5-standard vanaf nul opbouwen in plaats van deze uit te breiden.
Warning
Volledig nieuw bouwen is een geavanceerde optie. U neemt de verantwoordelijkheid voor het bijhouden van upstream-wijzigingen in de v5-standard-installatiekopieën, waaronder Python pinnen, beveiligingspatches, platformhulpprogramma's en de door het platform vereiste bestanden onder /databricks/ en /etc/environment. In plaats daarvan raadt Databricks aan databricksruntime/environment:v5-standard uit te breiden, zoals eerder getoond in Stap 2.
Databricks biedt een referentie-Dockerfile en requirements.txt waarmee de essentiële Python omgeving van v5-standard opnieuw wordt gemaakt. Download beide bestanden in dezelfde map voordat u gaat bouwen:
-
Dockerfile (opslaan als
Dockerfile, zonder de.txtextensie) - requirements.txt
Voer uit om de image te bouwen:
docker build -t <your-registry>/<repo>:<tag> .
Als uw buildhost https://pypi.org niet kan bereiken, overschrijft u de pip-index tijdens de build door het volgende uit te voeren:
docker build --build-arg PIP_INDEX_URL=https://your-mirror/simple -t <your-registry>/<repo>:<tag> .
Voordat u verdergaat met de volgende stap, controleert u of de gecureerde Python pakketten op schone wijze worden geïmporteerd door het volgende uit te voeren:
docker run --rm --cpus 2 <your-registry>/<repo>:<tag> \
/databricks/python3/bin/python -c \
"import pandas, numpy, pyarrow, mlflow, databricks.connect; print('OK')"
Stap 3: Push je image naar een registry
Push vervolgens uw image naar een Docker-registry. Databricks Container Services ondersteunt dezelfde registers op zowel standaard als toegewezen rekenprocessen:
- Docker Hub zonder verificatie of basisverificatie.
- Azure Container Registry met basisverificatie.
Andere registers die geen verificatie of basisverificatie ondersteunen, moeten ook werken. Basisverificatie maakt gebruik van de gebruikersnaam en het wachtwoord van het register.
Gebruik voor optimale prestaties bij het ophalen van containerimages een containerregister in dezelfde cloud en regio als uw Azure Databricks-werkruimte.
echo "$REGISTRY_PASSWORD" | docker login -u <registry-username> --password-stdin <registry-url>
docker push <registry-url>/<project>[/<repo>]:<tag>
Note
Als u Docker Hub gebruikt, controleert u of uw frequentielimieten geschikt zijn voor de berekening die u verwacht in een periode van zes uur te starten. Raadpleeg de Docker-documentatie voor meer informatie. Als deze limiet wordt overschreden, retourneren aanvragen 429 Too Many Requests.
Stap 4: Uw rekenproces starten
U kunt rekenresources starten die gebruikmaken van uw aangepaste image via de gebruikersinterface of de API. Er moet aan de volgende eisen worden voldaan:
- De rekentoegangsmodus moet Standaard zijn (in de API ingesteld op
data_security_modeDATA_SECURITY_MODE_STANDARD). Als de berekening is ingesteld op de toegewezen toegangsmodus, wordt een andere versie van Databricks Container Services gebruikt, die een andere basisinstallatiekopie verwacht en niet kan worden gestart met de basisinstallatiekopie die u hebt gemaakt. - De Databricks Runtime-versie moet 18.3 of hoger zijn.
Note
Als u daarvoor met een instancepool wilt starten, moet de pool worden gemaakt waarbij preloaded_docker_images is ingesteld, en de docker_image van het cluster moet hiermee overeenkomen. Zie Databricks Container Services gebruiken met een instancepool voordat u start.
Uw rekenproces starten met behulp van de gebruikersinterface
Controleer op de pagina Rekenproces maken of de Toegangsmodus is ingesteld op Standard en Databricks Runtime is ingesteld op 18.3 of hoger.
Selecteer onder Geavanceerdehet tabblad Docker.
Selecteer Uw eigen Docker-container gebruiken.
Voer uw aangepaste Docker-image in het veld Docker Image URL in.
Registry Tagindeling Docker Hub <organization>/<repository>:<tag>(bijvoorbeeld:databricksruntime/environment:v5-standard)Azure Container Registratiedienst <your-registry-name>.azurecr.io/<repository-name>:<tag>Het verificatietype selecteren. Zie Verificatie van Docker-installatiekopieën.
Note
Als u de instellingen voor Docker niet ziet wanneer u compute maakt, is Databricks Container Services mogelijk niet ingeschakeld in uw werkruimte. Een werkruimtebeheerder moet dit inschakelen voordat gebruikers een Docker-image kunnen opgeven. Zie stap 1: Databricks Container Services inschakelen voor standaard berekenen.
Uw rekenproces starten met behulp van de API
Hieronder staat een voorbeeld van een API-aanroep waarmee u een standaard compute-instance maakt met uw aangepaste image. Zorg ervoor dat data_security_mode is ingesteld op DATA_SECURITY_MODE_STANDARD en spark_version is ingesteld op 18.3.x-scala2.13 of hoger.
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"
}'
Authenticatie van Docker-images
Authenticatievereisten zijn afhankelijk van je Docker-image type. U kunt ook geheimen gebruiken om gebruikersnamen en wachtwoorden voor verificatie op te slaan. Zie Geheimen gebruiken voor verificatie.
- Voor openbare Docker-installatiekopieën hoeft u geen verificatiegegevens op te nemen. Stel in de gebruikersinterface verificatie- in op standaard-. Voor de API-aanroep, opnemen.
- Voor private Docker-afbeeldingen moet u authenticeren met behulp van een service-principal-ID en wachtwoord (of toepasselijke geheimen) als gebruikersnaam en wachtwoord.
- Authenticeer voor Azure Container Registry met behulp van een service-principal-ID en wachtwoord (of toepasselijke geheimen) als de gebruikersnaam en het wachtwoord. Raadpleeg de documentatie over service-principalverificatie voor Azure Container Registry voor informatie over het aanmaken van de service-principal.
Geheimen gebruiken voor verificatie
Databricks Container Service biedt ondersteuning voor het gebruik van geheimen voor verificatie. Wanneer u uw rekenresource maakt in de gebruikersinterface, gebruikt u het veld Verificatie om gebruikersnaam en wachtwoordte selecteren, en voert u in plaats daarvan uw geheimen in met behulp van het {{secrets/<scope-name>/<dcs-secret>}}-formaat, in plaats van uw gebruikersnaam of wachtwoord in platte tekst. Als u de API gebruikt, voert u de geheimen in de basic_auth velden in.
Zie Geheime beheervoor meer informatie over het maken van geheimen.
Databricks Container Services gebruiken met een instantiegroep
Als u Databricks Container Services met een exemplaargroep wilt gebruiken, moet u de pool maken met behulp van de API exemplaargroepen, niet de gebruikersinterface.
De pool moet worden aangemaakt met vooraf geladen Docker-images. Dit maakt inactieve instanties met uw aangepaste image gereed, zodat workloads sneller kunnen starten. Stel het preloaded_docker_images veld voor de aanvraag in met dezelfde afbeeldingsverwijzingen en verificatie die u gebruikt bij het rechtstreeks starten van rekenkracht. Het veld is een lijst, dus één pool kan meerdere images voorladen.
De pool en de gekoppelde rekenresources moeten ermee akkoord gaan of Docker wordt gebruikt. Als voor een pool preloaded_docker_images niet is ingesteld, kunt u er geen Databricks Container Services-compute tegen starten. Maak een nieuwe pool met preloaded_docker_images set.
Voor pools die zijn gemaakt met preloaded_docker_images, moet elke computeresource die voor die pool wordt gestart, in het aanmaakverzoek een overeenkomende docker_image opgeven. Anders mislukt het maken van de compute met 'docker_image' must be provided for cluster created with instance pool: <pool-id>.
Migreren van de oorspronkelijke Databricks Container Services
Databricks Container Services voor standaard berekenen is een andere service dan de oorspronkelijke Databricks Container Services voor toegewezen rekenkracht. Deze functie heeft de volgende verschillen:
- Workloads worden uitgevoerd via het Spark Connect-protocol .
- Init-scripts wijzigen de Python-omgeving van uw workload niet. U moet alle Python afhankelijkheden in de Docker-installatiekopieën installeren. U kunt init-scripts blijven gebruiken voor toepassingen die gegevens van Spark gebruiken, zoals Datadog- of Kafka-agents.
Als u wilt migreren van de oorspronkelijke Databricks Container Services voor toegewezen rekencapaciteit, bouw dan uw aangepaste installatiekopie opnieuw voor Databricks Container Services voor standaardcompute en werk uw computeconfiguratie bij:
- Vervang de
FROMlijn in uw Dockerfile doorFROM databricksruntime/environment:v5-standard(ofv5-standard-armvoor AWS Graviton). - Pas uw Dockerfile-instructies aan de nieuwe basisimage aan. Standaard-Dockerfile-instructies worden ondersteund, met de uitzonderingen die worden vermeld in stap 2: Uw aangepaste installatiekopieën bouwen.
- Installeer Python pakketten in
/databricks/python3in plaats van andere virtualenv. Werkbelastingen (notebooks, Python wieltaken, Python scripttaken) lezen uit dit pad. - Werk uw rekenconfiguratie bij voor het gebruik van de standaardtoegangsmodus en Databricks Runtime 18.3 of hoger.
- Verplaats alle Python-omgevingsinstellingen die eerder in het Dockerfile zijn uitgevoerd door een init-script.
Limitations
Naast de standaard compute-beperkingen heeft Databricks Container Services voor standaard berekenen de volgende beperkingen:
- Bibliotheken die aan een compute zijn gekoppeld, worden niet ondersteund.
- Privépakketopslagplaatsen worden niet ondersteund.
- Databricks Runtime voor Machine Learning wordt niet ondersteund.
- Als u standaard compute wilt starten met Databricks Container Services met een instance pool, moet de pool worden gemaakt waarbij
preloaded_docker_imagesis ingesteld. Zie Databricks Container Services gebruiken met een exemplaargroep.
Troubleshooting
Als het tabblad Docker niet wordt weergegeven onder Geavanceerd wanneer u compute maakt, is Databricks Container Services niet ingeschakeld voor de werkruimte. Een werkruimtebeheerder moet deze functie eerst in de werkruimte inschakelen voordat gebruikers een Docker-image kunnen opgeven. Zie stap 1: Databricks Container Services inschakelen voor standaard berekenen.