Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga
Dostępna jest również wersja beta usługi Databricks Container Services dla obliczeń w trybie dostępu standardowego. Zobacz Databricks Container Services — informacje o standardowych zasobach obliczeniowych.
Usługa Databricks Container Services umożliwia określenie obrazu platformy Docker podczas tworzenia obliczeń. Oto przykładowe przypadki użycia:
- Dostosowywanie biblioteki: masz pełną kontrolę nad bibliotekami systemowym, które chcesz zainstalować.
- Wzorcowe środowisko kontenera: obraz Docker to ściśle zabezpieczone środowisko, które nigdy się nie zmieni.
- Integracja z Docker CI/CD: możesz zintegrować usługę Azure Databricks z potokami Docker CI/CD.
Za pomocą obrazów platformy Docker można również tworzyć niestandardowe środowiska uczenia głębokiego na obliczeniach przy użyciu urządzeń z procesorem GPU. Aby uzyskać więcej informacji o korzystaniu z obliczeń GPU w usłudze Databricks Container Services, zobacz Databricks Container Services w obliczeniach GPU.
Aby wykonywać zadania przy każdym uruchomieniu kontenera, użyj skryptu inicjalizacyjnego.
Wymagania
- Obszar roboczy usługi Azure Databricks musi mieć usługę Databricks Container Services włączoną.
- Na Twoim komputerze musi być uruchomiona nowsza wersja demona Dockera (przetestowana i działająca z wersją klienta/serwera 18.03.0-ce), a polecenie
dockermusi być dostępne wPATH.
Ograniczenia
- Usługi kontenerowe Databricks nie są obsługiwane w przypadku obliczeń przy użyciu standardowego trybu dostępu (dawniej trybu dostępu współdzielonego).
- Databricks Runtime dla uczenia maszynowego nie obsługuje Databricks Container Services.
- Aby uzyskać dostęp do woluminów w Databricks Container Services, dodaj następującą konfigurację do pola konfiguracji Spark w ustawieniach obliczeniowych:
spark.databricks.unityCatalog.volumes.enabled true. - Aby uzyskać dostęp do federowanych metadanych Hive w Usługach Kontenerowych Databricks, dodaj następującą konfigurację do pola konfiguracji Spark obliczeń:
spark.databricks.unityCatalog.hms.federation.enabled true. -
172.17.0.0/16to domyślny zakres adresów IP używany przez platformę Docker. Aby zapobiec problemom z łącznością z powodu konfliktu adresów IP, unikaj konfigurowania zasobów w tej podsieci. - Usługa Databricks Container Services nie obsługuje uwierzytelniania notebooków.
Krok 1. Tworzenie bazy
Usługa Databricks zaleca utworzenie bazy platformy Docker na podstawie bazy, którą usługa Databricks skompilowała i przetestowała. Istnieje również możliwość skompilowania bazy platformy Docker od podstaw. W tej sekcji opisano dwie opcje.
Sposób 1. Używanie bazy utworzonej przez usługę Databricks
W tym przykładzie użyto tagu 16.4-LTS dla obrazu, który będzie przeznaczony dla obliczeń za pomocą środowiska Databricks Runtime 16.4 LTS:
FROM databricksruntime/standard:16.4-LTS
...
Aby określić dodatkowe biblioteki języka Python, takie jak najnowsza wersja biblioteki pandas i urllib, użyj wersji specyficznej dla kontenera .pip W przypadku kontenera databricksruntime/standard:16.4-LTS uwzględnij następujące elementy:
RUN /databricks/python3/bin/pip install pandas
RUN /databricks/python3/bin/pip install urllib3
Obrazy podstawowe są hostowane w usłudze Docker Hub pod adresem https://hub.docker.com/u/databricksruntime. Pliki Dockerfile używane do generowania tych baz znajdują się w https://github.com/databricks/containers.
Uwaga
Obrazy hostowane w usłudze Docker Hub, oznaczone tagami z sufiksem „-LTS”, zostaną załatane. Wszystkie inne obrazy są przykładami i nie są regularnie poprawiane.
Uwaga
Obrazów podstawowych databricksruntime/standard i databricksruntime/minimal nie należy mylić z niepowiązanymi środowiskami databricks-standard i databricks-minimal, dołączonymi do niedostępnego już środowiska Databricks Runtime z Conda (Beta).
Sposób 2. Tworzenie własnej bazy platformy Docker
Możesz również utworzyć bazę platformy Docker od podstaw. Obraz platformy Docker musi spełniać następujące wymagania:
- JDK 8u191 jako Java w systemie
PATH - Bash
- iproute2 (ubuntu iproute)
- coreutils (ubuntu coreutils)
- procps (ubuntu procps)
- sudo (ubuntu sudo)
- Ubuntu Linux
Aby utworzyć własny obraz od podstaw, musisz utworzyć środowisko wirtualne. Należy również uwzględnić pakiety wbudowane w obliczenia usługi Databricks, takie jak Python i R. Aby rozpocząć, możesz użyć odpowiedniego obrazu podstawowego:
- W przypadku języka R:
databricksruntime/rbase - W przypadku języka Python:
databricksruntime/python - Minimalny obraz utworzony przez usługę Databricks:
databricksruntime/minimal
Możesz również odwołać się do przykładowych plików Dockerfile w usłudze GitHub.
Uwaga
Usługa Databricks zaleca korzystanie z systemu Ubuntu Linux; można jednak użyć systemu Alpine Linux. Aby korzystać z systemu Alpine Linux, należy uwzględnić następujące pliki:
Ponadto należy skonfigurować język Python, jak pokazano w tym przykładowym pliku Dockerfile.
Ostrzeżenie
Dokładnie przetestuj niestandardowy obraz kontenera na obliczeniach usługi Azure Databricks. Kontener może działać na komputerze lokalnym lub kompilacji, ale po uruchomieniu kontenera w usłudze Azure Databricks uruchomienie obliczeniowe może zakończyć się niepowodzeniem, niektóre funkcje mogą zostać wyłączone lub kontener może przestać działać, nawet dyskretnie. W najgorszych scenariuszach może to spowodować uszkodzenie danych lub przypadkowe ujawnienie danych stronom zewnętrznym.
Krok 2: Prześlij swój obraz bazowy
Prześlij niestandardowy obraz podstawowy do rejestru Docker. Ten proces jest obsługiwany przy użyciu następujących rejestrów:
- Docker Hub bez uwierzytelniania ani podstawowego uwierzytelniania.
- Azure Container Registry z uwierzytelnianiem podstawowym.
Oczekuje się również, że będą działać inne rejestry Dockera, które obsługują brak uwierzytelniania lub uwierzytelnianie podstawowe.
Uwaga
Jeśli używasz Docker Hub jako rejestru Docker, upewnij się, że limity liczby żądań są wystarczające dla liczby zasobów obliczeniowych, które planujesz uruchomić w ciągu sześciu godzin. Te limity szybkości są różne dla użytkowników anonimowych, uwierzytelnionych użytkowników bez płatnej subskrypcji i płatnych subskrypcji. Aby uzyskać szczegółowe informacje, zobacz dokumentację platformy Docker. Jeśli ten limit zostanie przekroczony, otrzymasz odpowiedź "429 Zbyt wiele żądań".
Krok 3. Uruchamianie obliczeń
Środowisko obliczeniowe można uruchomić przy użyciu interfejsu użytkownika lub interfejsu API.
Uruchamianie obliczeń przy użyciu interfejsu użytkownika
Na stronie Tworzenie zasobów obliczeniowych określ wersję środowiska Databricks Runtime, która obsługuje Databricks Container Services.
W obszarze Zaawansowane wybierz kartę Docker .
Wybierz pozycję Użyj własnego kontenera platformy Docker.
W polu URL obrazu Docker wprowadź własny obraz Docker.
Przykłady adresów URL obrazów Dockera:
Rejestr Format znacznika Docker Hub <organization>/<repository>:<tag>(na przykład:databricksruntime/standard:latest)Azure Container Registry <your-registry-name>.azurecr.io/<repository-name>:<tag>Wybierz typ uwierzytelniania. Możesz użyć tajemnic do przechowywania wartości uwierzytelniania, takich jak nazwa użytkownika i hasło. Zobacz Uwierzytelnianie obrazów platformy Docker.
Uruchamianie obliczeń przy użyciu interfejsu API
Użyj interfejsu wiersza polecenia usługi Databricks, aby uruchomić środowisko obliczeniowe przy użyciu niestandardowej bazy platformy Docker.
databricks clusters create \ --cluster-name <cluster-name> \ --node-type-id Standard_DS3_v2 \ --json '{ "num_workers": 0, "docker_image": { "url": "databricksruntime/standard:latest", "basic_auth": { "username": "<docker-registry-username>", "password": "<docker-registry-password>" } }, "spark_version": "16.4.x-scala2.12" }'
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. Aby uzyskać informacje na temat tworzenia jednostki usługi, zobacz dokumentację uwierzytelniania jednostki usługi Azure Container Registry.
Użyj kluczy tajnych do uwierzytelniania
Usługa 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żywanie skryptu init
Usługa Databricks Container Services umożliwia klientom uwzględnianie skryptów inicjalizacyjnych w kontenerze Docker. W większości przypadków należy unikać skryptów inicjowania i zamiast tego wprowadzać dostosowania za pośrednictwem platformy Docker bezpośrednio (przy użyciu pliku Dockerfile). Jednak niektóre zadania muszą być wykonywane po uruchomieniu kontenera, a nie podczas kompilowania kontenera. Użyj skryptu inicjowania dla tych zadań.
Załóżmy na przykład, że chcesz uruchomić demona zabezpieczeń wewnątrz niestandardowego kontenera. Zainstaluj i skompiluj demona w obrazie platformy Docker za pomocą potoku tworzenia obrazu. Następnie dodaj skrypt init, który uruchamia demona. W tym przykładzie skrypt inicjowania będzie zawierać wiersz podobny do systemctl start my-daemon.
W interfejsie API można określić skrypty inicjowania w ramach specyfikacji obliczeniowej w następujący sposób. Aby uzyskać więcej informacji, zobacz interfejs API klastrów.
"init_scripts": [
{
"file": {
"destination": "file:/my/local/file.sh"
}
}
]
W przypadku obrazów Databricks Container Services skrypty init można również przechowywać w magazynie w chmurze.
Podczas uruchamiania środowiska obliczeniowego korzystającego z Databricks Container Services mają miejsce następujące kroki:
- Maszyny wirtualne są pozyskiwane od dostawcy usług w chmurze.
- Niestandardowy obraz Docker jest pobierany z Twojego repozytorium.
- Usługa Azure Databricks tworzy kontener platformy Docker na podstawie obrazu.
- Kod środowiska Uruchomieniowego usługi Databricks jest kopiowany do kontenera platformy Docker.
- Skrypty inicjalizacyjne są wykonywane. Zobacz Co to są skrypty init?.
Usługa Azure Databricks ignoruje prymitywy Docker CMD i ENTRYPOINT.
Włączanie usług kontenerów
Administrator obszaru roboczego może kontrolować, czy usługa Databricks Container Services jest włączona dla obszaru roboczego.
Administratorzy obszaru roboczego mogą włączać i wyłączać usługę Databricks Container Service za pomocą Databricks CLI. W treści żądania JSON określ od enableDcs do true, jak w poniższym przykładzie:
databricks workspace-conf set-status \
--json '{"enableDcs": "true"}'