Menyesuaikan kontainer dengan Databricks Container Service
Layanan Kontainer Databricks memungkinkan Anda menentukan gambar Docker saat membuat komputasi. Beberapa contoh kasus penggunaan:
- Kustomisasi pustaka - Anda memiliki kontrol penuh atas pustaka sistem yang ingin Anda pasang.
- Lingkungan kontainer keemasan - gambar Docker Anda adalah lingkungan terkunci yang tidak akan pernah berubah.
- Integrasi Docker CI/CD - Anda dapat mengintegrasikan Azure Databricks dengan alur Docker CI/CD Anda.
Anda juga dapat menggunakan gambar Docker untuk membuat lingkungan pembelajaran mendalam kustom pada komputasi dengan perangkat GPU. Untuk informasi tambahan tentang menggunakan komputasi GPU dengan Databricks Container Services, lihat Databricks Container Services pada komputasi GPU.
Agar tugas dijalankan setiap kali kontainer dimulai, gunakan skrip init.
Persyaratan
- Ruang kerja Azure Databricks Anda harus mengaktifkan Layanan Kontainer Databricks.
- Komputer Anda harus menjalankan daemon Docker terbaru (yang diuji dan bekerja dengan Client/Server Versi 18.03.0-ce) dan
docker
perintah harus tersedia pada komputer AndaPATH
.
Batasan
- Layanan Kontainer Databricks tidak didukung pada komputasi menggunakan mode akses bersama.
- Databricks Runtime for Pembelajaran Mesin tidak mendukung Databricks Container Services.
- Untuk mengakses Volume di Databricks Container Services, tambahkan konfigurasi berikut ke bidang konfigurasi Spark komputasi:
spark.databricks.unityCatalog.volumes.enabled true
.
Langkah 1: Bangun basis Anda
Databricks merekomendasikan agar Anda membangun basis Docker Anda dari basis yang telah dibangun dan diuji oleh Databricks. Anda juga dapat membangun basis Docker Anda dari awal. Bagian ini menjelaskan dua opsi tersebut.
Opsi 1. Gunakan basis yang dibangun oleh Databricks
Contoh ini menggunakan 9.x
tag untuk gambar yang akan menargetkan komputasi dengan versi runtime Databricks Runtime 9.1 LTS ke atas:
FROM databricksruntime/standard:9.x
...
Untuk menentukan pustaka Python tambahan, seperti versi terbaru pandas dan urllib, gunakan versi khusus kontainer pip
. Untuk databricksruntime/standard:9.x
kontainer, sertakan yang berikut:
RUN /databricks/python3/bin/pip install pandas
RUN /databricks/python3/bin/pip install urllib3
Untuk databricksruntime/standard:8.x
kontainer atau yang lebih rendah, sertakan yang berikut:
RUN /databricks/conda/envs/dcs-minimal/bin/pip install pandas
RUN /databricks/conda/envs/dcs-minimal/bin/pip install urllib3
Gambar dasar dihosting di Docker Hub di https://hub.docker.com/u/databricksruntime. Dockerfiles yang digunakan untuk menghasilkan basis ini berada di https://github.com/databricks/containers.
Catatan
Gambar yang dihosting Docker Hub dengan Akhiran "-LTS" akan di-patch. Semua gambar lainnya adalah contoh dan tidak di-patch secara teratur.
Catatan
Gambar dasar databricksruntime/standard
dan databricksruntime/minimal
tidak boleh dikacaukan dengan yang tidak terkait databricks-standard
dan databricks-minimal
lingkungan yang termasuk dalam Runtime bahasa umum Databricks yang tidak lagi tersedia dengan Conda (Beta).
Opsi 2. Bangun basis Docker Anda sendiri
Anda juga dapat membangun basis Docker Anda dari awal. Gambar Docker harus memenuhi persyaratan berikut:
- JDK 8u191 sebagai Java pada sistem
PATH
- bash
- iproute2 (ubuntu iproute)
- coreutils (coreutils ubuntu)
- procps (ubuntu procps)
- sudo (ubuntu sudo)
- Ubuntu Linux
Untuk membangun gambar Anda sendiri dari awal, Anda harus membuat lingkungan virtual. Anda juga harus menyertakan paket yang disertakan dalam komputasi Databricks, seperti Python dan R. Untuk memulai, Anda dapat menggunakan gambar dasar yang sesuai:
- Untuk R:
databricksruntime/rbase
- Untuk Python:
databricksruntime/python
- Untuk gambar minimal yang dibangun oleh Databricks:
databricksruntime/minimal
Anda juga dapat merujuk ke contoh Dockerfiles di GitHub.
Catatan
Databricks merekomendasikan untuk menggunakan Linux Ubuntu; Namun, dimungkinkan untuk menggunakan Linux Alpine. Untuk menggunakan Linux Alpine, Anda harus menyertakan file-file ini:
Selain itu, Anda harus mengatur Python, seperti yang ditunjukkan dalam contoh Dockerfile ini.
Peringatan
Uji gambar kontainer kustom Anda secara menyeluruh pada komputasi Azure Databricks. Kontainer Anda mungkin berfungsi pada komputer lokal atau build, tetapi ketika kontainer Anda diluncurkan di Azure Databricks, peluncuran komputasi mungkin gagal, fitur tertentu mungkin dinonaktifkan, atau kontainer Anda mungkin berhenti berfungsi, bahkan diam-diam. Dalam skenario terburuk, itu bisa merusak data Anda atau secara tidak sengaja mengekspos data Anda ke pihak eksternal.
Langkah 2: Dorong gambar dasar Anda
Dorong gambar dasar kustom Anda ke registri Docker. Proses ini didukung dengan pendaftar berikut:
- Docker Hub tanpa autentikasi atau autentikasi dasar.
- Azure Container Registry dengan autentikasi dasar.
Pendaftar Docker lain yang tidak mendukung autentikasi atau autentikasi dasar juga diharapkan berfungsi.
Catatan
Jika Anda menggunakan Docker Hub untuk registri Docker Anda, pastikan untuk memeriksa bahwa batas tarif mengakomodasi jumlah komputasi yang Anda harapkan untuk diluncurkan dalam periode enam jam. Batas tarif ini berbeda untuk pengguna anonim, pengguna yang diautentikasi tanpa langganan berbayar, dan langganan berbayar. Lihat dokumentasi Docker untuk mengetahui detailnya. Jika batas ini terlampaui, Anda akan mendapatkan respons “429 Terlalu Banyak Permintaan”.
Langkah 3: Luncurkan komputasi Anda
Anda dapat meluncurkan komputasi menggunakan UI atau API.
Luncurkan komputasi Anda menggunakan UI
Pada halaman Buat komputasi, tentukan Versi Runtime Databricks yang mendukung Layanan Kontainer Databricks.
Di bawah Opsi tingkat lanjut, pilih tab Docker.
Pilih Gunakan kontainer Docker Anda sendiri.
Di bidang URL Gambar Docker, masukkan gambar Docker kustom Anda.
Contoh URL gambar Docker:
Registri Format tag Docker Hub <organization>/<repository>:<tag>
(misalnya:databricksruntime/standard:latest
)Azure Container Registry <your-registry-name>.azurecr.io/<repository-name>:<tag>
Pilih jenis autentikasi. Anda dapat menggunakan rahasia untuk menyimpan nilai autentikasi nama pengguna dan kata sandi. Lihat Menggunakan rahasia untuk autentikasi.
Luncurkan komputasi Anda menggunakan API
Gunakan Databricks CLI untuk meluncurkan komputasi dengan basis Docker kustom Anda.
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": "14.3.x-scala2.12" }'
basic_auth
persyaratan tergantung pada jenis gambar Docker Anda:- Untuk gambar Docker publik, jangan sertakan
basic_auth
bidang. - Untuk gambar Docker pribadi, Anda harus menyertakan
basic_auth
bidang, menggunakan ID perwakilan layanan dan kata sandi sebagai nama pengguna dan kata sandi. - Untuk Azure Container Registry, Anda harus mengatur
basic_auth
bidang ke ID dan kata sandi untuk perwakilan layanan. Lihat Dokumentasi autentikasi perwakilan layanan Azure Container Registry untuk informasi tentang pembuatan perwakilan layanan. - Anda juga dapat menggunakan rahasia untuk menyimpan informasi autentikasi. Lihat Menggunakan rahasia untuk autentikasi.
- Untuk gambar Docker publik, jangan sertakan
Gunakan skrip init
Layanan Kontainer Databricks memungkinkan pelanggan untuk menyertakan skrip init dalam kontainer Docker. Dalam kebanyakan kasus, Anda harus menghindari skrip init dan sebagai gantinya membuat penyesuaian melalui Docker secara langsung (menggunakan Dockerfile). Namun, tugas-tugas tertentu harus dijalankan ketika kontainer dimulai, bukan ketika kontainer dibangun. Gunakan skrip init untuk tugas-tugas ini.
Misalnya, Anda ingin menjalankan daemon keamanan di dalam kontainer kustom. Pasang dan bangun daemon di gambar Docker melalui alur pembuatan gambar Anda. Kemudian, tambahkan skrip init yang memulai daemon. Dalam contoh ini, skrip init akan menyertakan baris seperti systemctl start my-daemon
.
Di API, Anda dapat menentukan skrip init sebagai bagian dari spesifikasi komputasi sebagai berikut. Untuk informasi selengkapnya, lihat API Kluster.
"init_scripts": [
{
"file": {
"destination": "file:/my/local/file.sh"
}
}
]
Untuk gambar Databricks Container Services, Anda juga dapat menyimpan skrip init di penyimpanan cloud.
Langkah-langkah berikut terjadi saat Anda meluncurkan komputasi yang menggunakan Databricks Container Services:
- VM diperoleh dari penyedia cloud.
- Gambar Docker kustom diunduh dari repositori Anda.
- Azure Databricks membuat kontainer Docker dari gambar.
- Kode Runtime bahasa umum Databricks disalin ke dalam kontainer Docker.
- Skrip init dijalankan. Lihat Apa itu skrip init?.
Azure Databricks mengabaikan Docker CMD
dan ENTRYPOINT
primitif.
Menggunakan rahasia untuk autentikasi
Layanan Kontainer Databricks mendukung penggunaan rahasia untuk autentikasi. Saat membuat sumber daya komputasi Anda, alih-alih memasukkan nama pengguna atau kata sandi teks biasa Anda, masukkan rahasia Anda menggunakan {{secrets/<scope-name>/<dcs-secret>}}
format . Untuk informasi tentang membuat rahasia, lihat Rahasia.
Aktifkan Layanan Kontainer
Untuk menggunakan kontainer kustom pada komputasi Anda, admin ruang kerja harus mengaktifkan Layanan Kontainer Databricks.
Admin ruang kerja dapat mengaktifkan Layanan Kontainer Databricks menggunakan Databricks CLI. Dalam isi permintaan JSON, tentukan enableDcs
ke true
, seperti dalam contoh berikut:
databricks workspace-conf set-status \
--json '{"enableDcs": "true"}'
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk