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.
För att skapa en anpassad avbildning tillhandahåller Azure Databricks dessutom en basavbildning som är anpassad efter serverlösa miljöversioner som du kan utöka för att uppfylla 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.
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. Du kan hämta databricksruntime/environment:v5-standard, lägga dina paket ovanpå dem och få löpande uppdateringar och säkerhetskorrigeringar som hanteras av Databricks.
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:v5-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:v5-standard
RUN /databricks/python3/bin/python -m pip install <your python package>
I följande exempel visas hur du installerar ett paket från en privat lagringsplats.
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
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 fullständig kontroll över innehållet i din basavbild (till exempel för att uppfylla strikta krav på avbildsstorlek, leverantörskedja eller regelefterlevnad) kan du bygga en minimal motsvarighet till databricksruntime/environment:v5-standard från grunden i stället för att bygga vidare på den.
Varning
Att skapa från grunden är ett avancerat alternativ. Du tar på dig ansvaret för att spåra uppströmsändringar i v5-standard-avbildningen, inklusive Python stift, säkerhetskorrigeringar, plattformsverktyg och plattformsbaserade filer under /databricks/ och /etc/environment. I stället rekommenderar Databricks att utöka databricksruntime/environment:v5-standard så som visades tidigare i Steg 2.
Databricks tillhandahåller en referens-Dockerfile och requirements.txt som återskapar den grundläggande Python-miljön för v5-standard. Ladda ned båda filerna till samma katalog innan du skapar:
-
Dockerfile (spara som
Dockerfile, utan.txttillägget) - 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.
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 Skapa beräkning kontrollerar du att åtkomstläge är inställt på Standard och att Databricks Runtime är inställd på 18 LTS eller högre. Se till att välja 18 LTS, inte 18.0, 18.1 eller 18.2.
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:v5-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 är ett exempel på ett API-anrop som skapar en standardberäkning med din anpassade avbildning. Se till att data_security_mode är inställt på DATA_SECURITY_MODE_STANDARD och att spark_version är inställt på ett värde motsvarande Databricks Runtime 18 LTS eller senare. För Databricks Runtime 18 LTS använder du 18.x-scala2.13, inte 18.0.x-scala2.13, 18.1.x-scala2.13eller 18.2.x-scala2.13.
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.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:
-
FROMErsätt raden i Dockerfile medFROM databricksruntime/environment:v5-standard(ellerv5-standard-armför AWS Graviton). - 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 beräkningskonfigurationen så att den använder standardåtkomstläge och Databricks Runtime 18 LTS eller senare. Se till att välja 18 LTS, inte 18.0, 18.1 eller 18.2.
- 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.