Standart işlem için Databricks Kapsayıcı Hizmetleri

Important

Standart işlem için Databricks Container Services Beta sürümündedir. Çalışma alanı yöneticisinin bu özelliği çalışma alanı Önizlemeleri sayfasından etkinleştirmesi gerekir. Bu, genel kullanıma sunulmuş olan özel işlem için Databricks Container Services'ten ayrı bir hizmettir.

Standart işlem için Databricks Container Services, standart işlem oluştururken bir Docker görüntüsü belirtmenize olanak tanıyarak paylaşılan işlem ortamlarındaki özel kapsayıcılara erişmenizi sağlar. Docker görüntünüz iş yükü ortamının tek tanımı olduğundan, geliştirme ve üretim genelinde tutarlı sonuçlar elde edebilmeniz için uzak ortamı yerel olarak yeniden oluşturabilirsiniz.

Özel görüntünüz, Python REPL komutları ve Python UDF'leri gibi kullanıcı kodunu çalıştıran korumalı alan kapsayıcıları için kullanılır. Spark altyapısı Databricks tarafından yönetilen bir ortamda çalışır ve Spark sorguları Spark Connect kullanılarak korumalı alan kapsayıcıları ile Spark altyapısı arasında gönderilir.

Ayrıca, özel görüntünüzü oluşturmaya yardımcı olmak için Azure Databricks gereksinimlerinizi karşılayacak şekilde genişletebileceğiniz sunucusuz ortam sürümleri ile hizalanmış bir temel görüntü sağlar.

Requirements

Databricks Container Services'ı standart işlem için kullanmak için:

  • İşlem kaynağının Databricks Runtime 18 LTS veya üzerini çalıştırması ve Standart erişim modunu kullanması gerekir.
  • docker sisteminizde PATH komutu kullanılabilir durumda olan güncel bir Docker daemon’una sahip olmalısınız.

Note

18 LTS'yi seçtiğinizden emin olun. 18.0, 18.1 veya 18.2'yi seçmeyin.

1. Adım: Standart işlem için Databricks Container Services'ı etkinleştirme

Databricks Container Services'ı standart işlem için kullanmak için çalışma alanı yöneticisinin Önizlemeler sayfasından özelliği etkinleştirmesi gerekir:

  1. Azure Databricks çalışma alanınızda yönetici olarak oturum açın.
  2. Sağ üstteki kullanıcı menüsünde Önizlemeler'e tıklayın.
  3. Standart işlem için DCS'yi bulun ve açın.

2. Adım: Özel görüntünüzü oluşturma

Bu yönergeler, Databricks tarafından sağlanan temel görüntüyü genişleterek özel görüntü oluşturmayı gösterir (önerilir). Temel görüntü, Ubuntu, Python ve JDK gibi iş yüklerinizi başlatmak için gereken bağımlılıkları içerir. databricksruntime/environment:v5-standard öğesini çekebilir, paketlerinizi bunun üzerine ekleyebilir ve Databricks tarafından yönetilen sürekli güncellemeleri ve güvenlik yamalarını devralabilirsiniz.

Sıfırdan minimal bir temel görüntü oluşturmak istiyorsanız, Referans: sıfırdan minimal bir temel görüntü oluşturma bölümüne bakın.

2a. Adım: Temel görüntüyü çekme

Temel görüntüyü çekmek için şunu çalıştırın:

docker pull databricksruntime/environment:v5-standard

2b. Adım: Temel görüntüyü genişleten bir Dockerfile yazma

Temel görüntünün /databricks/python3 sanal ortamına özel Python paketleri yükleyin. Bu, iş yüklerinizi başlatan sistem sanal ortamıdır.

FROM databricksruntime/environment:v5-standard

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

Aşağıdaki örnekte, özel bir depodan bir paketin nasıl yükleneceği gösterilmektedir.

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

Herhangi bir standart Dockerfile yönergesini (örneğin, RUN, ENV, WORKDIR, COPY) kullanabilirsiniz. Aşağıdaki yönergeler, Azure Databricks'in iş yükünüzü başlatma biçimi nedeniyle yok sayılır:

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

Note

Scala iş yükleri için JAR dosyalarınızı imajdaki /scala-jars/user dizinine kopyalayın ve sandbox kullanıcısının bunları okuyabilmesi için chmod 0644. Azure Databricks bu yoldaki JAR'leri Scala REPL sınıf yoluna ve Scala UDF sınıf yollarına yükler.

2. Adım: Görüntüyü oluşturma

Görüntüyü oluşturmak için şunu çalıştırın:

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

Warning

Özel imajınızı bir Azure Databricks işlem kaynağında iyice test edin. Yerel bir makinede veya derleme makinesinde çalışan bir imaj, Azure Databricks üzerinde başlatıldığında başlatılamayabilir, bazı özellikleri sessizce devre dışı bırakabilir ya da çalışmayı durdurabilir.

Referans: sıfırdan minimal bir temel görüntü oluşturun

Temel görüntünüzün içeriği üzerinde tam denetime ihtiyacınız varsa (örneğin, katı görüntü boyutu, tedarik zinciri veya uyumluluk gereksinimlerini karşılamak için), genişletmek yerine sıfırdan en düşük eşdeğerini databricksruntime/environment:v5-standard oluşturabilirsiniz.

Warning

Sıfırdan oluşturmak gelişmiş bir seçenektir. v5-standard görüntüsünde Python pinleri, güvenlik düzeltme ekleri, platform araçları ve /databricks/ ve /etc/environment altındaki platform için gerekli dosyalar gibi yukarı akış değişikliklerini izleme sorumluluğunu üstlenirsiniz. Bunun yerine, Databricks, daha önce databricksruntime/environment:v5-standard'da gösterildiği gibi öğesini genişletmenizi önerir.

Databricks, requirements.txt'in temel Python ortamını yeniden oluşturan bir referans Dockerfile ve v5-standard sağlar. Derlemeden önce her iki dosyayı da aynı dizine indirin:

Görüntüyü oluşturmak için şunu çalıştırın:

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

Build host’unuz https://pypi.org öğesine erişemiyorsa, derleme sırasında şu komutu çalıştırarak pip indeksini geçersiz kılın:

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

Sonraki adıma geçmeden önce, aşağıdakini çalıştırarak seçilen Python paketlerinin temiz bir şekilde içeri aktarıldığını doğrulayın:

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

3. Adım: Görüntünüzü kayıt defterine gönderme

Ardından görüntünüzü bir Docker kayıt defterine gönderin. Databricks Container Services, hem standart hem de ayrılmış işlemde aynı kayıt defterlerini destekler:

Kimlik doğrulaması olmadan ya da temel kimlik doğrulamayla çalışan diğer kayıt depoları da desteklenmelidir. Temel kimlik doğrulaması, kayıt defteri kullanıcı adınızı ve parolanızı kullanır.

En iyi görüntü çekme performansı için, Azure Databricks çalışma alanınızla aynı bulutta ve bölgede bir kayıt defteri kullanın.

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

Note

Docker Hub kullanıyorsanız hız sınırlarınızın altı saatlik bir süre içinde başlatmayı beklediğiniz işlem için uygun olup olmadığını denetleyin. Ayrıntılar için Docker belgelerine bakın. Bu sınır aşılırsa, istekler 429 Too Many Requests döndürür.

4. Adım: Hesaplama kaynağınızı başlatın

Kullanıcı arabirimini veya API'yi kullanarak özel görüntünüzü kullanan işlem başlatabilirsiniz. Aşağıdaki gereksinimler karşılanmalıdır:

  • Hesaplama erişim modu Standart olmalıdır (API’de data_security_mode değerini DATA_SECURITY_MODE_STANDARD olarak ayarlayın). İşlem kaynağı Dedicated erişim moduna ayarlanmışsa, Databricks Container Services’ın farklı bir sürümü kullanılır; bu sürüm farklı bir temel imaj bekler ve oluşturduğunuz temel imajla başlatılamaz.
  • Databricks Runtime sürümü 18 LTS veya üzeri olmalıdır. 18.0, 18.1 veya 18.2 değil 18 LTS seçtiğinizden emin olun.

Note

Bir işlem örneği havuzunu kullanarak başlatmak için havuz, preloaded_docker_images ayarlanmış olarak oluşturulmalı ve kümenin docker_image değeri bununla eşleşmelidir. Başlatmadan önce bkz. Databricks Container Services'ı örnek havuzuyla kullanma .

Kullanıcı arabirimini kullanarak işlem başlatma

  1. İşlem oluştur sayfasındaErişim modununStandart ve Databricks çalışma zamanının18 LTS veya üzeri olarak ayarlandığından emin olun. 18.0, 18.1 veya 18.2 değil 18 LTS seçtiğinizden emin olun.

  2. Gelişmişbölümünde, Docker sekmesini seçin.

  3. Kendi Docker kapsayıcınızı kullanseçeneğini belirleyin.

  4. Docker Görüntüsü URL'si alanına özel görüntünüzü girin.

    Registry Etiket biçimi
    Docker Hub <organization>/<repository>:<tag> (örneğin: databricksruntime/environment:v5-standard)
    Azure Container Registry (Azure Konteyner Kayıt Defteri) <your-registry-name>.azurecr.io/<repository-name>:<tag>
  5. Kimlik doğrulama türünü seçin. Docker görüntü kimlik doğrulaması için bkz. .

Note

İşlem oluştururken Docker ayarlarını görmüyorsanız Databricks Container Services çalışma alanınızda etkinleştirilmemiş olabilir. Herhangi bir kullanıcının Docker görüntüsü belirtebilmesi için önce çalışma alanı yöneticisinin bunu etkinleştirmesi gerekir. Bkz . 1. Adım: Standart işlem için Databricks Container Services'i etkinleştirme.

API'yi kullanarak işlem başlatma

Aşağıda, özel görüntünüzle standart bir işlem oluşturan örnek bir API çağrısı verilmiştir. data_security_mode öğesinin DATA_SECURITY_MODE_STANDARD olarak ve spark_version öğesinin Databricks Runtime 18 LTS veya üzeri bir değere ayarlandığından emin olun. Databricks Runtime 18 LTS için 18.x-scala2.13 kullanın; 18.0.x-scala2.13, 18.1.x-scala2.13 veya 18.2.x-scala2.13 kullanmayın.

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 görüntü kimlik doğrulama

Kimlik doğrulama gereksinimleri Docker görüntü türünüze bağlıdır. Kimlik doğrulama kullanıcı adlarını ve parolaları depolamak için gizli veriler de kullanabilirsiniz. Bkz. Kimlik doğrulaması için gizli anahtarları kullanma.

  • Genel Docker görüntüleri için kimlik doğrulama bilgilerini eklemeniz gerekmez. Kullanıcı arabiriminde Kimlik DoğrulamasıVarsayılanolarak ayarlayın. API çağrısı için .
  • Özel Docker görüntüleri için, kullanıcı adı ve parola olarak bir hizmet sorumlusu kimliği ve şifreyi (veya uygun gizli bilgileri) kullanarak kimlik doğrulaması yapın.
  • Azure Container Registry için, kullanıcı adı ve parola olarak bir hizmet sorumlusu kimliği ve parola (veya geçerli diğer gizli bilgiler) kullanarak kimlik doğrulaması yapın. Hizmet sorumlusunun nasıl oluşturulacağı hakkında bilgi için Azure Container Registry hizmet sorumlusu kimlik doğrulaması belgelerine başvurun.

Kimlik doğrulaması için gizli anahtarlar kullanın

Databricks Container Service, kimlik doğrulama için gizli anahtarların kullanılmasını destekler. Kullanıcı arabiriminde işlem kaynağınızı oluştururken Kimlik Doğrulaması alanını kullanarak kullanıcı adı ve parolaseçin, ardından düz metin kullanıcı adınızı veya parolanızı girmek yerine {{secrets/<scope-name>/<dcs-secret>}} biçimini kullanarak gizli dizilerinizi girin. API'yi kullanıyorsanız, sırları basic_auth alanlarına girin.

Gizli anahtar oluşturma hakkında bilgi için bkz. Gizli anahtar yönetimi.

Databricks Container Services'i örnek havuzuyla kullanma

Databricks Container Services'ı örnek havuzuyla kullanmak için, havuzu kullanıcı arabirimini değil Örnek Havuzları API'sini kullanarak oluşturmanız gerekir.

Havuz, Docker görüntüleri önceden yüklenmiş olarak oluşturulmalıdır. Bu, boşta kalan örnekleri özel görüntünüzle ısıtarak iş yüklerinin daha hızlı başlatılmasını sağlar. İstekteki preloaded_docker_images alanını, işlem kaynaklarını doğrudan başlatırken kullandığınız aynı imaj referansları ve kimlik doğrulamasıyla ayarlayın. Alan bir liste olduğundan, tek bir havuz birden çok görüntüyü önceden yükleyebilir.

Havuz ve ekli işlem kaynakları, Docker'ın kullanımda olup olmadığı konusunda anlaşmalıdır. Bir havuz ayarlanmadıysa preloaded_docker_images , databricks Container Services işlemini bu havuza karşı başlatamazsınız. preloaded_docker_images ayarlı yeni bir havuz oluşturun.

preloaded_docker_images ile oluşturulan havuzlar için, havuz için başlatılan herhangi bir işlem kaynağı, oluşturma isteğinde eşleşen bir docker_image belirtmelidir. Aksi takdirde, işlem oluşturma 'docker_image' must be provided for cluster created with instance pool: <pool-id> ile başarısız olur.

Özgün Databricks Kapsayıcı Hizmetleri'nden geçiş

Standart işlem kaynakları için Databricks Kapsayıcı Hizmetleri, orijinal adanmış işlem kaynakları için Databricks Kapsayıcı Hizmetleri hizmetinden farklı bir hizmettir. Bu özellik aşağıdaki farklılıklara sahiptir:

  • İş yükleri Spark Connect protokolü aracılığıyla yürütülür.
  • Init betikleri, iş yükünüzün Python ortamını değiştirmez. Docker görüntüsündeki tüm Python bağımlılıklarını yüklemeniz gerekir. Datadog veya Kafka aracıları gibi Spark'tan veri kullanan uygulamalar için init betiklerini kullanmaya devam edebilirsiniz.

Ayrılmış işlem için özgün Databricks Kapsayıcı Hizmetleri'nden geçiş yapmak için, standart işlem için Databricks Container Services üzerinde özel görüntünüzü yeniden derleyin ve işlem yapılandırmanızı güncelleştirin:

  1. Dockerfile dosyanızdaki FROM satırını FROM databricksruntime/environment:v5-standard ile değiştirin (veya AWS Graviton için v5-standard-arm ile).
  2. Dockerfile yönergelerinizi yeni temel görüntüye taşıma. Standart Dockerfile yönergeleri desteklenir ve 2. Adım: Özel görüntünüzü oluşturma bölümünde listelenen özel durumlar vardır.
  3. Python paketlerini başka herhangi bir sanal ortam yerine /databricks/python3 içine yükleyin. İş yükleri (notebook'ler, Python wheel işleri, Python komut dosyası işleri) bu yoldan okunur.
  4. İşlem yapılandırmanızı Standart erişim modunu ve Databricks Runtime 18 LTS veya üzerini kullanacak şekilde güncelleştirin. 18.0, 18.1 veya 18.2 değil 18 LTS seçtiğinizden emin olun.
  5. Bir init betiğinin daha önce gerçekleştirdiği Python ortam ayarlarını Dockerfile'a taşıyın.

Sınırlamalar

Standart işlem sınırlamalarına ek olarak, standart işlem için Databricks Container Services aşağıdaki sınırlamalara sahiptir:

  • İşlem kapsamlı kitaplıklar desteklenmez.
  • Özel paket depoları desteklenmez.
  • Machine Learning için Databricks Runtime desteklenmez.
  • Databricks Container Services ile bir örnek havuzunu kullanarak standart işlem kaynağı başlatmak için havuzun preloaded_docker_images ayarlanmış olarak oluşturulması gerekir. Bkz. Databricks Container Services'ı örnek havuzuyla kullanma.

Troubleshooting

İşlem oluştururken Docker sekmesi Gelişmiş altında görünmüyorsa, Databricks Container Services çalışma alanınız için etkinleştirilmez. Herhangi bir kullanıcının Docker görüntüsü belirtebilmesi için çalışma alanı yöneticisinin çalışma alanında etkinleştirmesi gerekir. Bkz. Kapsayıcı Hizmetlerini Etkinleştirme.

Docker sekmesi, özniteliği gizleyen bir işlem ilkesi tarafından da gizlenebilirdocker_image.url. Özellik etkinse ancak sekme hâlâ görünmüyorsa, size atanan ilkenin bu özniteliği gizleyip gizlemediğini kontrol etmesi için bir çalışma alanı yöneticisine başvurun. Bkz . Desteklenen öznitelikler.