Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
Databricks Container Services för standardberäkning finns i Beta. En arbetsyteadministratör måste aktivera den här funktionen från sidan förhandsversioner av arbetsytan. Det här är en separat tjänst från Databricks Container Services för dedikerad beräkning, som är allmänt tillgänglig.
Med Databricks Container Services för standardberäkning kan du ange en Docker-avbildning när du skapar standardberäkning, vilket ger dig åtkomst till anpassade containrar i delade beräkningsmiljöer. Docker-avbildningen är den enda definitionen av arbetsbelastningsmiljön, så du kan återskapa fjärrmiljön lokalt för konsekventa resultat i utveckling och produktion.
Din anpassade avbildning används för sandbox-containrar som kör användarkod, till exempel Python REPL-kommandon och Python UDF:er. Spark-motorn körs i en Databricks-hanterad miljö och Spark-frågor skickas mellan sandbox-containrarna och Spark-motorn med Spark Connect.
Dessutom, för att hjälpa till att bygga din anpassade image, tillhandahåller Azure Databricks basavbildningar anpassade till serverlösa miljöversioner som du kan utöka för att möta dina behov.
Requirements
Så här använder du Databricks Container Services för standardberäkning:
- Beräkningsresursen måste köra Databricks Runtime 18 LTS eller senare och använda standardåtkomstläget .
- Du måste ha en nyare Docker-daemon med kommandot
dockertillgängligt på dinPATH.
Note
Se till att välja 18 LTS. Välj inte 18.0, 18.1 eller 18.2.
Använd följande tabell för att identifiera den minsta Databricks Runtime-versionen som krävs av varje basavbild:
| Basbild | Minimum Databricks körtid | Minsta API spark_version |
Serverlös miljöversion |
|---|---|---|---|
databricksruntime/environment:v6-standard |
19 | 19.x-scala2.13 |
6 |
databricksruntime/environment:v5-standard |
18 LTS | 18.3.x-scala2.13 |
5 |
Steg 1: Aktivera Databricks Container Services för standardberäkning
Om du vill använda Databricks Container Services för standardberäkning måste en arbetsyteadministratör aktivera funktionen från sidan Förhandsversioner :
- Logga in på din Azure Databricks-arbetsyta som administratör.
- I användarmenyn i det övre högra hörnet klickar du på Förhandsversioner.
- Hitta DCS för standardberäkning och aktivera den.
Steg 2: Skapa din anpassade avbildning
De här anvisningarna visar hur du skapar en anpassad avbildning genom att utöka en basavbildning från Databricks (rekommenderas). Basavbilden innehåller de beroenden som krävs för att starta dina arbetslaster, till exempel Ubuntu, Python och JDK. Välj en basavbildning vars minimikrav på Databricks Runtime täcks av din beräkning, och lägg dina anpassningar ovanpå. Bygg om din image regelbundet för att hämta de senaste patcharna från basbilden. Exemplen i denna artikel används v6-standard med Databricks Runtime 19.
Om du vill skapa en minimal basavbildning från grunden kan du läsa Referens: skapa en minimal basavbildning från grunden.
Steg 2a: Hämta basavbildningen
Kör följande för att hämta basavbilden:
docker pull databricksruntime/environment:v6-standard
Steg 2b: Skriv en Dockerfile som utökar basavbildningen
Installera anpassade Python paket i basavbildningens /databricks/python3 virtuella miljö. Det här är den virtuella systemmiljön som startar dina arbetsbelastningar.
FROM databricksruntime/environment:v6-standard
RUN /databricks/python3/bin/python -m pip install <your python package>
Följande exempel visar hur man installerar ett paket från ett anpassat paketindex utan att behålla index-URL:en i runtime-miljön. Åsidosätt PIP_INDEX_URL vid kompilering när du använder ett privat index.
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
Du kan använda alla standardinstruktioner för Dockerfile (till exempel RUN, ENV, WORKDIR, COPY). Följande instruktioner ignoreras på grund av hur Azure Databricks startar din arbetsbelastning:
USERCMDENTRYPOINTEXPOSEHEALTHCHECKSHELLSTOPSIGNAL
Note
För Scala-arbetsbelastningar kopierar du dina JAR-filer till /scala-jars/user katalogen i avbildningen och chmod 0644 dem så att sandbox-användaren kan läsa dem. Azure Databricks laddar JAR-filer från den här sökvägen till Scala REPL-klassökvägen och Scala UDF-klassökvägarna.
Steg 2c: Skapa avbildningen
Skapa avbildningen genom att köra:
docker build -f <your-dockerfile> -t <registry-url>/<project>[/<repo>]:<tag> .
Varning
Testa din anpassade avbildning noggrant på en Azure Databricks beräkning. En avbildning som fungerar på en lokal dator eller en byggdator kan misslyckas med att starta, inaktivera funktioner tyst eller sluta fungera när den startas på Azure Databricks.
Referens: skapa en minimal basavbildning från grunden
Om du behöver full kontroll över innehållet i din basimage (till exempel för att uppfylla strikta krav på bildstorlek, leveranskedja eller efterlevnad), kan du bygga en minimal, Python-fokuserad image från grunden istället för att utökadatabricksruntime/environment:v6-standard.
Referensen som byggts från grunden återskapar endast den grundläggande Python-miljön. Den inkluderar inte JDK eller andra icke-Python-körtidskomponenter från v6-standard och stöder inte Scala-arbetsbelastningar. Utöka basbilden som Databricks tillhandahåller när dina arbetsbelastningar kräver dessa komponenter.
Varning
Att skapa från grunden är ett avancerat alternativ. Du tar på dig ansvaret för att spåra upstream-ändringar i v6-standard bilden, inklusive Python-pins, säkerhetspatchar, plattformsverktyg och plattformskrävande filer under /databricks/ och /etc/environment. Databricks rekommenderar att utöka databricksruntime/environment:v6-standard som tidigare i steg 2.
Databricks tillhandahåller referensfiler som återskapar den essentiella Python-miljön för varje basbild. Ladda ner Dockerfilen och beroendefilen för din basavbild till samma katalog innan du bygger. Spara Dockerfile.txt som Dockerfile.
| Basbild | Dockerfile | Beroendefil |
|---|---|---|
v6-standard |
Dockerfile.txt | pyproject.toml |
v5-standard |
Dockerfile.txt | requirements.txt |
Skapa avbildningen genom att köra:
docker build -t <your-registry>/<repo>:<tag> .
Om buildvärden inte kan nå https://pypi.org, åsidosätt pip-indexet under bygget genom att köra:
docker build --build-arg PIP_INDEX_URL=https://your-mirror/simple -t <your-registry>/<repo>:<tag> .
Innan du fortsätter till nästa steg kontrollerar du att de utvalda Python paket importeras på ett korrekt sätt genom att köra:
docker run --rm --cpus 2 <your-registry>/<repo>:<tag> \
/databricks/python3/bin/python -c \
"import pandas, numpy, pyarrow, mlflow, databricks.connect; print('OK')"
Steg 3: Skicka avbildningen till ett register
Skicka sedan avbildningen till ett Docker-register. Databricks Container Services har stöd för samma register på både standard och dedikerad beräkning:
- Docker Hub utan autentisering eller grundläggande autentisering.
- Azure Container Registry med grundläggande autentisering.
Andra register som inte stöder någon autentisering eller grundläggande autentisering bör också fungera. Grundläggande autentisering använder ditt användarnamn och lösenord för registret.
För bästa prestanda för avbildningshämtning använder du ett register i samma moln och region som din Azure Databricks arbetsyta.
echo "$REGISTRY_PASSWORD" | docker login -u <registry-username> --password-stdin <registry-url>
docker push <registry-url>/<project>[/<repo>]:<tag>
Note
Om du använder Docker Hub kontrollerar du att dina hastighetsgränser motsvarar den beräkning som du förväntar dig att starta under en sextimmarsperiod. Mer information finns i Docker-dokumentationen. Om denna gräns överskrids returnerar begäranden 429 Too Many Requests.
Steg 4: Starta din beräkning
Du kan starta beräkning som använder din anpassade avbildning med hjälp av användargränssnittet eller API:et. Följande krav måste uppfyllas:
- Beräkningsåtkomstläget måste vara Standard (i API:et, inställt
data_security_modepåDATA_SECURITY_MODE_STANDARD). Om beräkningen är inställd på dedikerat åtkomstläge används en annan version av Databricks Container Services, som förväntar sig en annan basavbildning och inte startar med basavbildningen som du skapade. - Databricks Runtime-versionen måste vara 18 LTS eller senare. Se till att välja 18 LTS, inte 18.0, 18.1 eller 18.2.
- Databricks Runtime-versionen måste uppfylla minimikravet för din basimage.
Note
Om du vill starta mot en instanspool måste poolen skapas med preloaded_docker_images set och klustrets docker_image måste matcha. Se Använda Databricks Container Services med en instanspool innan du startar.
Starta din beräkning med hjälp av användargränssnittet
På sidan Create compute, ställ in Access-läget på Standard och välj en Databricks Runtime som uppfyller minimikravet för din basavbildning.
Under Advancedväljer du fliken Docker.
Välj Använd din egen Docker-container.
I fältet Url för Docker-avbildning anger du din anpassade avbildning.
Registry Taggformat Docker Hub <organization>/<repository>:<tag>(till exempel:databricksruntime/environment:v6-standard)Azure Container Registry (containerregistertjänst från Azure) <your-registry-name>.azurecr.io/<repository-name>:<tag>Välj autentiseringstyp. Se Docker-avbildningsautentisering.
Note
Om du inte ser Docker-inställningarna när du skapar beräkning kanske Databricks Container Services inte är aktiverat på din arbetsyta. En arbetsyteadministratör måste aktivera den innan någon användare kan ange en Docker-avbildning. Se Steg 1: Aktivera Databricks Container Services för standardberäkning.
Starta din beräkning med hjälp av API:et
Följande exempel på API-anrop skapar standardberäkning med en v6-standard anpassad avbildning på Databricks Runtime 19. Ställ in data_security_mode på DATA_SECURITY_MODE_STANDARD. De spark_version måste uppfylla minimikravet för din basbild.
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-avbildningsautentisering
Autentiseringskrav beror på din Docker-avbildningstyp. Du kan också använda hemligheter för att lagra användarnamn och lösenord för autentisering. Se Använda hemligheter för autentisering.
- För offentliga Docker-avbildningar behöver du inte inkludera autentiseringsinformation. I användargränssnittet anger du Authentication till Standard. För API-anropet inte inkludera fälten
basic_auth. - För privata Docker-avbildningar autentiserar du med ett tjänsthuvudnamns-ID och lösenord (eller tillämpliga hemligheter) som användarnamn och lösenord.
- För Azure Container Registry autentiserar du med ett tjänsthuvudnamns-ID och lösenord (eller tillämpliga hemligheter) som användarnamn och lösenord. Mer information om hur du skapar tjänstens huvudnamn finns i dokumentationen om autentisering av tjänstens huvudnamn i Azure Container Registry.
Använda hemligheter för autentisering
Databricks Container Service stöder användning av hemligheter för autentisering. När du skapar din beräkningsresurs i användargränssnittet använder du fältet Authentication för att välja Användarnamn och lösenordoch i stället för att ange användarnamnet eller lösenordet för oformaterad text anger du dina hemligheter med hjälp av {{secrets/<scope-name>/<dcs-secret>}} format. Om du använder API:et anger du hemligheterna i fälten basic_auth.
Information om hur du skapar hemligheter finns i Hemlighetshantering.
Använda Databricks Container Services med en instanspool
Om du vill använda Databricks Container Services med en instanspool måste du skapa poolen med api:et För instanspooler, inte användargränssnittet.
Poolen måste skapas med Docker-avbilder förladdade. Detta värmer inaktiva instanser med din anpassade avbildning så att arbetsbelastningarna startar snabbare. Ange fältet preloaded_docker_images på begäran med samma bildreferenser och autentisering som du använder när du startar beräkning direkt. Fältet är en lista, så en enda pool kan läsa in flera bilder i förväg.
Poolen och dess anslutna beräkningsresurser måste komma överens om huruvida Docker används. Om en pool inte har preloaded_docker_images angetts kan du inte starta Databricks Container Services-beräkning mot den. Skapa en ny pool med preloaded_docker_images inställt.
För pooler som skapats med preloaded_docker_imagesmåste alla beräkningsresurser som startas mot poolen ange en matchning docker_image i dess create-begäran. Annars misslyckas beräkningsskapandet med 'docker_image' must be provided for cluster created with instance pool: <pool-id>.
Migrera från de ursprungliga Databricks Container Services
Databricks Container Services för standardberäkning är en annan tjänst än de ursprungliga Databricks Container Services för dedikerad beräkning. Den här funktionen har följande skillnader:
- Arbetsbelastningar körs genom Spark Connect-protokollet.
- Init-skript ändrar inte arbetsbelastningens Python miljö. Du måste installera alla Python-beroenden i Docker-avbildningen. Du kan fortsätta använda init-skript för program som använder data från Spark, till exempel Datadog- eller Kafka-agenter.
Om du vill migrera från den ursprungliga Databricks Container Services för dedikerad beräkning återskapar du din anpassade avbildning på Databricks Container Services för standardberäkning och uppdaterar beräkningskonfigurationen:
- Byt ut raden
FROMi din Dockerfile mot en basavbild vars lägsta krav på Databricks Runtime uppfylls av din målkörningsmiljö. För AWS Graviton, använd motsvarande-armbildvariant. - Porta dockerfile-instruktionerna till den nya basavbildningen. Standardinstruktioner för Dockerfile stöds, med undantagen i steg 2: Skapa din anpassade avbildning.
- Installera Python paket i
/databricks/python3i stället för andra virtualenv. Arbetsbelastningar (anteckningsböcker, Python wheel-jobb, Python-skriptjobb) läser från den här sökvägen. - Uppdatera din beräkningskonfiguration till att använda Standardåtkomstläge och välj en Databricks Runtime-version som uppfyller minimikravet för din basavbildning.
- Flytta alla Python miljökonfigurationer som ett init-skript tidigare utförde till Dockerfile.
Limitations
Utöver standardberäkningsbegränsningarna har Databricks Container Services för standardberäkning följande begränsningar:
- Bibliotek med beräkningsomfång stöds inte.
- Privata paketlagringsplatser stöds inte.
- Databricks Runtime för strojové učenie stöds inte.
- Om du vill starta standardberäkning med Databricks Container Services mot en instanspool måste poolen skapas med
preloaded_docker_imagesset. Se Använda Databricks Container Services med en instanspool.
Troubleshooting
Om fliken Docker inte visas under Avancerat när du skapar beräkning är Databricks Container Services inte aktiverat för din arbetsyta. En arbetsyteadministratör måste aktivera den på arbetsytan innan någon användare kan ange en Docker-avbildning. Se Aktivera containertjänster.
Fliken Docker kan också döljas av en beräkningsprincip som döljer attributet docker_image.url . Om funktionen är aktiverad men fliken fortfarande saknas ber du en arbetsyteadministratör att kontrollera om den princip som tilldelats dig döljer det här attributet. Se Attribut som stöds.