Usługi kontenerowe Databricks dla standardowych zasobów obliczeniowych

Ważna

Usługi kontenerowe Databricks dla standardowych zasobów obliczeniowych są dostępne w wersji beta. Administrator obszaru roboczego musi włączyć tę funkcję na stronie Podglądy obszaru roboczego. Jest to oddzielna usługa od usługi Databricks Container Services dla dedykowanych zasobów obliczeniowych, która jest ogólnie dostępna.

Usługi Databricks Container Services dla standardowych zasobów obliczeniowych umożliwiają określenie obrazu Docker podczas tworzenia standardowych zasobów obliczeniowych, zapewniając dostęp do niestandardowych kontenerów w udostępnionych środowiskach obliczeniowych. Obraz platformy Docker jest jedyną definicją środowiska obciążenia, dzięki czemu można odtworzyć środowisko zdalne lokalnie w celu uzyskania spójnych wyników w środowisku deweloperskim i produkcyjnym.

Ponadto, aby ułatwić tworzenie obrazu niestandardowego, Azure Databricks udostępnia obraz podstawowy dopasowany do wersji środowiska bezserwerowego które można rozszerzyć zgodnie z potrzebami.

Requirements

Aby używać usługi Databricks Container Services w standardowych zasobach obliczeniowych:

  • Zasób obliczeniowy musi działać z Databricks Runtime w wersji 18.3 lub nowszej oraz korzystać z trybu dostępu Standard.
  • Musisz mieć aktualnego demona Dockera z dostępnym poleceniem docker na swoim PATH.

Krok 1. Włącz usługę Databricks Container Services dla standardowych zasobów obliczeniowych

Aby korzystać z funkcji Databricks Container Services dla standardowych zasobów obliczeniowych, administrator obszaru roboczego musi włączyć tę funkcję na stronie Wersje zapoznawcze:

  1. Zaloguj się do obszaru roboczego usługi Azure Databricks jako administrator.
  2. W menu użytkownika w prawym górnym rogu kliknij pozycję Podglądy.
  3. Znajdź usługę DCS dla standardowych obliczeń i włącz ją.

Krok 2. Kompilowanie obrazu niestandardowego

Te instrukcje pokazują, jak utworzyć obraz niestandardowy przez rozszerzenie obrazu podstawowego dostarczonego przez usługę Databricks (zalecane). Obraz podstawowy zawiera zależności wymagane do uruchomienia obciążeń, takich jak Ubuntu, Python i JDK. Możesz pobrać databricksruntime/environment:v5-standard, dodać na nim swoje pakiety i korzystać z bieżących aktualizacji oraz poprawek zabezpieczeń zarządzanych przez Databricks.

Jeśli chcesz utworzyć minimalny obraz podstawowy od podstaw, zobacz Dokumentacja: tworzenie minimalnego obrazu podstawowego od podstaw.

Krok 2a. Ściąganie obrazu podstawowego

Aby pobrać obraz bazowy, uruchom polecenie:

docker pull databricksruntime/environment:v5-standard

Krok 2b. Pisanie pliku Dockerfile, który rozszerza obraz podstawowy

Zainstaluj niestandardowe pakiety Python do środowiska wirtualnego /databricks/python3 obrazu bazowego. Jest to systemowe środowisko wirtualne uruchamiające obciążenia.

FROM databricksruntime/environment:v5-standard

RUN /databricks/python3/bin/python -m pip install <your python package>

W poniższym przykładzie pokazano, jak zainstalować pakiet z repozytorium prywatnego.

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

Można użyć dowolnej standardowej instrukcji dockerfile (na przykład RUN, , ENVWORKDIR, COPY). Poniższe instrukcje są ignorowane ze względu na sposób, w jaki usługa Azure Databricks uruchamia Twoje obciążenie robocze:

  • USER
  • CMD
  • ENTRYPOINT
  • EXPOSE
  • HEALTHCHECK
  • SHELL
  • STOPSIGNAL

Note

W przypadku zadań Scala skopiuj pliki JAR do katalogu /scala-jars/user w obrazie i ustaw dla nich uprawnienia za pomocą chmod 0644, aby użytkownik sandbox mógł je odczytać. Azure Databricks ładuje pliki JAR z tej ścieżki na ścieżkę klas platformy Spark.

Krok 2c. Kompilowanie obrazu

Aby zbudować obraz, uruchom:

docker build -f <your-dockerfile> -t <registry-url>/<project>[/<repo>]:<tag> .

Ostrzeżenie

Dokładnie przetestuj niestandardowy obraz na zasobie obliczeniowym Azure Databricks. Obraz, który działa na komputerze lokalnym lub na maszynie kompilacyjnej, może nie uruchomić się, bez żadnego komunikatu wyłączyć niektóre funkcje lub przestać działać po uruchomieniu w usłudze Azure Databricks.

Informacje: jak zbudować minimalny obraz bazowy od podstaw

Jeśli potrzebujesz pełnej kontroli nad zawartością obrazu bazowego (na przykład aby spełnić rygorystyczne wymagania dotyczące rozmiaru obrazu, łańcucha dostaw lub zgodności), możesz zbudować od podstaw minimalny odpowiednik databricksruntime/environment:v5-standard zamiast go rozszerzać.

Ostrzeżenie

Kompilowanie od podstaw jest opcją zaawansowaną. Przyjmujesz na siebie odpowiedzialność za śledzenie zmian po stronie źródłowej w obrazie v5-standard, w tym przypiętych wersji Pythona, poprawek zabezpieczeń, narzędzi platformowych oraz plików wymaganych przez platformę w katalogach /databricks/ i /etc/environment. Zamiast tego usługa Databricks zaleca rozszerzenie databricksruntime/environment:v5-standard , jak pokazano wcześniej w kroku 2.

Usługa Databricks udostępnia odwołanie do pliku Dockerfile i requirements.txt, które odtwarzają podstawowe środowisko Python v5-standard. Pobierz oba pliki do tego samego katalogu przed utworzeniem:

Aby skompilować obraz, uruchom polecenie:

docker build -t <your-registry>/<repo>:<tag> .

Jeśli host kompilacji nie może nawiązać połączenia https://pypi.org, przesłoń indeks pip w czasie kompilacji, uruchamiając polecenie:

docker build --build-arg PIP_INDEX_URL=https://your-mirror/simple -t <your-registry>/<repo>:<tag> .

Przed przejściem do następnego kroku sprawdź, czy wyselekcjonowane pakiety Python są importowane w sposób czysty, uruchamiając polecenie:

docker run --rm --cpus 2 <your-registry>/<repo>:<tag> \
  /databricks/python3/bin/python -c \
  "import pandas, numpy, pyarrow, mlflow, databricks.connect; print('OK')"

Krok 3: Prześlij obraz do rejestru

Następnie wypchnij obraz do rejestru platformy Docker. Usługa Databricks Container Services obsługuje te same rejestry zarówno w przypadku standardowych, jak i dedykowanych obliczeń:

Inne rejestry, które nie obsługują uwierzytelniania lub uwierzytelniania podstawowego, również powinny działać. Uwierzytelnianie podstawowe używa nazwy użytkownika i hasła rejestru.

Aby uzyskać najlepszą wydajność ściągania obrazów, użyj rejestru w tej samej chmurze i regionie co obszar roboczy Azure Databricks.

echo "$REGISTRY_PASSWORD" | docker login -u <registry-username> --password-stdin <registry-url>
docker push <registry-url>/<project>[/<repo>]:<tag>

Note

Jeśli używasz Docker Hub, sprawdź, czy limity szybkości są uwzględniane zgodnie z oczekiwaniami na uruchomienie obliczeń w okresie sześciu godzin. Aby uzyskać szczegółowe informacje, zobacz dokumentację platformy Docker. Jeśli ten limit zostanie przekroczony, żądania zwracają wartość 429 Too Many Requests.

Krok 4. Uruchamianie obliczeń

Możesz uruchomić środowisko obliczeniowe korzystające z niestandardowego obrazu przy użyciu interfejsu użytkownika lub interfejsu API. Muszą być spełnione następujące wymagania:

  • Tryb dostępu do mocy obliczeniowej musi być ustawiony na Standard (w interfejsie API ustaw data_security_mode na DATA_SECURITY_MODE_STANDARD). Jeśli zasoby obliczeniowe są ustawione na tryb dostępu Dedykowany, używana jest inna wersja Databricks Container Services, która oczekuje innego obrazu podstawowego i nie uruchomi się przy użyciu utworzonego obrazu podstawowego.
  • Wersja środowiska Databricks Runtime musi być 18.3 lub nowsza.

Note

Aby uruchomić pulę wystąpień, należy utworzyć pulę z zestawem preloaded_docker_images , a klaster docker_image musi być zgodny. Zobacz Korzystanie z usług Databricks Container Services z pulą instancji przed uruchomieniem.

Uruchamianie obliczeń przy użyciu interfejsu użytkownika

  1. Na stronie Tworzenie zasobów obliczeniowych upewnij się, że tryb dostępu jest ustawiony na wartość Standardowa , a środowisko uruchomieniowe usługi Databricks ma wartość 18.3 lub nowszą.

  2. W obszarze Zaawansowane wybierz kartę Docker .

  3. Wybierz pozycję Użyj własnego kontenera platformy Docker.

  4. W polu Adres URL obrazu platformy Docker wprowadź obraz niestandardowy.

    Registry Format znacznika
    Docker Hub <organization>/<repository>:<tag> (na przykład: databricksruntime/environment:v5-standard)
    Azure Container Registry <your-registry-name>.azurecr.io/<repository-name>:<tag>
  5. Wybierz typ uwierzytelniania. Zobacz Uwierzytelnianie obrazów platformy Docker.

Note

Jeśli podczas tworzenia zasobu obliczeniowego nie widzisz ustawień Docker, funkcja Databricks Container Services może nie być włączona w obszarze roboczym. Administrator obszaru roboczego musi najpierw to włączyć, zanim dowolny użytkownik będzie mógł wskazać obraz Dockera. Zobacz Krok 1. Włącz usługę Databricks Container Services dla standardowych zasobów obliczeniowych.

Uruchamianie obliczeń przy użyciu interfejsu API

Poniżej przedstawiono przykładowe wywołanie interfejsu API, które tworzy standardowe obliczenia przy użyciu obrazu niestandardowego. Upewnij się, że data_security_mode ustawiono na DATA_SECURITY_MODE_STANDARD, a spark_version na 18.3.x-scala2.13 lub wyższą.

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"
}'

Uwierzytelnianie obrazu Dockera

Wymagania dotyczące uwierzytelniania zależą od typu obrazu platformy Docker. Możesz również używać sekretów do przechowywania nazw użytkowników i haseł do celów uwierzytelniania. Zobacz Używanie sekretów do uwierzytelniania.

  • W przypadku publicznych obrazów platformy Docker nie trzeba dołączać informacji o uwierzytelnianiu. W interfejsie użytkownika ustaw wartość Uwierzytelnianie na Wartość domyślna. W przypadku wywołania interfejsu API nie dołączaj pola basic_auth.
  • W przypadku prywatnych obrazów Docker uwierzytelnij się przy użyciu identyfikatora jednostki usługi i hasła (lub odpowiednich wpisów tajnych) jako nazwę użytkownika i hasło.
  • W przypadku usługi Azure Container Registry uwierzytelnij się, używając identyfikatora jednostki usługi i hasła (lub odpowiednich tajemnic) jako nazwy użytkownika i hasła. Informacje na temat tworzenia jednostki usługi można znaleźć w dokumentacji uwierzytelniania jednostki usługi Azure Container Registry.

Używaj sekretów do uwierzytelniania

Databricks Container Service obsługuje użycie wpisów tajnych do uwierzytelniania. Podczas tworzenia zasobu obliczeniowego w interfejsie użytkownika użyj pola Uwierzytelnianie , aby wybrać pozycję Nazwa użytkownika i hasło, a następnie zamiast wprowadzać nazwę użytkownika lub hasło w postaci zwykłego tekstu, wprowadź wpisy tajne przy użyciu {{secrets/<scope-name>/<dcs-secret>}} formatu . Jeśli używasz interfejsu API, wprowadź sekrety w polach basic_auth.

Aby uzyskać informacje na temat tworzenia wpisów tajnych, zobacz Zarządzanie wpisami tajnymi.

Użyj Databricks Container Services z pulą wystąpień

Aby korzystać z usługi Databricks Container Services z pulą instancji, musisz utworzyć pulę przy użyciu interfejsu API pul instancji, a nie interfejsu użytkownika.

Pula musi zostać utworzona przy użyciu wstępnie załadowanych obrazów platformy Docker. Powoduje to wstępne uruchomienie bezczynnych instancji przy użyciu niestandardowego obrazu, dzięki czemu obciążenia uruchamiają się szybciej. Ustaw pole preloaded_docker_images w żądaniu, używając tych samych odwołań do obrazów i danych uwierzytelniających, których używasz podczas bezpośredniego uruchamiania zasobów obliczeniowych. Pole jest listą, więc pojedyncza pula może wstępnie załadować wiele obrazów.

Pula i dołączone do niej zasoby obliczeniowe muszą być zgodne co do tego, czy Docker jest używany. Jeśli dla puli nie ustawiono parametru preloaded_docker_images, nie można dla niej uruchomić zasobów obliczeniowych Databricks Container Services. Utwórz nową pulę z ustawionym parametrem preloaded_docker_images.

W przypadku pul utworzonych przy użyciu preloaded_docker_images każdy zasób obliczeniowy uruchomiony dla tej puli musi zawierać odpowiadający mu element docker_image w żądaniu utworzenia. W przeciwnym razie tworzenie zasobów obliczeniowych kończy się niepowodzeniem z poleceniem 'docker_image' must be provided for cluster created with instance pool: <pool-id>.

Migracja z pierwotnych usług kontenerowych Databricks

Usługa Databricks Container Services dla standardowych zasobów obliczeniowych różni się od oryginalnej usługi Databricks Container Services dla dedykowanych zasobów obliczeniowych. Ta funkcja ma następujące różnice:

  • Obciążenia są wykonywane za pośrednictwem protokołu Spark Connect .
  • Skrypty inicjalizacyjne nie modyfikują środowiska Python obciążenia roboczego. Należy zainstalować wszystkie zależności Pythona w obrazie Dockera. Możesz nadal używać skryptów inicjowania dla aplikacji korzystających z danych z platformy Spark, takich jak agenci usługi Datadog lub Kafka.

Aby przejść z oryginalnych usług Databricks Container Services dla dedykowanych zasobów obliczeniowych, ponownie skompiluj niestandardowy obraz dla Databricks Container Services dla standardowych zasobów obliczeniowych i zaktualizuj konfigurację zasobów obliczeniowych:

  1. Zastąp wiersz FROM w pliku Dockerfile na FROM databricksruntime/environment:v5-standard (lub na v5-standard-arm dla AWS Graviton).
  2. Przenoszenie instrukcji pliku Dockerfile do nowego obrazu podstawowego. Obsługiwane są standardowe instrukcje dotyczące pliku Dockerfile z wyjątkami wymienionymi w kroku 2: Kompilowanie obrazu niestandardowego.
  3. Zainstaluj pakiety Pythona w /databricks/python3 zamiast w jakimkolwiek innym środowisku wirtualnym. Obciążenia robocze (notatniki, zadania pakietów wheel języka Python, zadania skryptów języka Python) odczytują dane z tej ścieżki.
  4. Zaktualizuj konfigurację obliczeń, aby używać trybu dostępu Standard oraz środowiska Databricks Runtime w wersji 18.3 lub nowszej.
  5. Przenieś do pliku Dockerfile wszelką konfigurację środowiska Python, którą wcześniej wykonywał skrypt inicjalizacyjny.

Ograniczenia

Oprócz standardowych ograniczeń standardowych zasobów obliczeniowych usługa Databricks Container Services dla standardowych zasobów obliczeniowych ma następujące ograniczenia:

  • Biblioteki o zakresie obliczeniowym nie są obsługiwane.
  • Repozytoria pakietów prywatnych nie są obsługiwane.
  • Środowisko Databricks Runtime dla Machine Learning nie jest obsługiwane.
  • Aby uruchomić standardowe zasoby obliczeniowe z Databricks Container Services przy użyciu puli wystąpień, pulę należy utworzyć z ustawionym parametrem preloaded_docker_images. Zobacz Korzystanie z usługi Databricks Container Services z pulą instancji.

Troubleshooting

Jeśli karta Docker nie pojawia się w obszarze Zaawansowane podczas tworzenia zasobu obliczeniowego, usługa Databricks Container Services nie jest włączona w tym obszarze roboczym. Administrator przestrzeni roboczej musi to włączyć w tej przestrzeni roboczej, zanim jakikolwiek użytkownik będzie mógł określić obraz Dockera. Zobacz Krok 1. Włącz usługę Databricks Container Services dla standardowych zasobów obliczeniowych.