Bagikan melalui


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 Anda PATH.

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:

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:

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

  1. Pada halaman Buat komputasi, tentukan Versi Runtime Databricks yang mendukung Layanan Kontainer Databricks.

  2. Di bawah Opsi tingkat lanjut, pilih tab Docker.

  3. Pilih Gunakan kontainer Docker Anda sendiri.

  4. 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>
  5. 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

  1. Hasilkan token API.

  2. 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.

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:

  1. VM diperoleh dari penyedia cloud.
  2. Gambar Docker kustom diunduh dari repositori Anda.
  3. Azure Databricks membuat kontainer Docker dari gambar.
  4. Kode Runtime bahasa umum Databricks disalin ke dalam kontainer Docker.
  5. 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"}'