Databricks Container Service ile kapsayıcıları özelleştirme

Databricks Container Services, işlem oluştururken bir Docker görüntüsü belirtmenize olanak tanır. Bazı örnek kullanım örnekleri şunlardır:

  • Kitaplık özelleştirmesi: Yüklenmesini istediğiniz sistem kitaplıkları üzerinde tam denetime sahipsiniz.
  • Altın kapsayıcı ortamı: Docker görüntünüz hiçbir zaman değişmeyecek kilitli bir ortamdır.
  • Docker CI/CD tümleştirmesi: Azure Databricks'i Docker CI/CD işlem hatlarınızla tümleştirebilirsiniz.

Gpu cihazlarıyla işlem üzerinde özel derin öğrenme ortamları oluşturmak için Docker görüntülerini de kullanabilirsiniz. Databricks Container Services ile GPU işlemini kullanma hakkında ek bilgi için bkz . GPU işlemde Databricks Container Services.

Kapsayıcı her başlatıldığında yürütülecek görevler için bir başlatma betiği kullanın.

Gereksinimler

  • Azure Databricks çalışma alanınızda Databricks Container Services etkinleştirilmiş olmalıdır.
  • Makinenizde yeni bir Docker daemon (sınanmış ve İstemci/Sunucu Sürüm 18.03.0-ce ile çalışan) çalıştırılmalıdır ve docker komutu üzerinde PATHkullanılabilir olmalıdır.

Sınırlamalar

  • Databricks Container Services, paylaşılan erişim modu kullanılarak işlemde desteklenmez.
  • Machine Learning için Databricks Runtime, Databricks Container Services'ı desteklemez.
  • Databricks Container Services üzerindeki Birimlere erişmek için, işlem Spark yapılandırma alanına aşağıdaki yapılandırmayı ekleyin: spark.databricks.unityCatalog.volumes.enabled true.

1. Adım: Tabanınızı oluşturma

Databricks, Docker tabanınızı Databricks'in derleyip test yaptığı bir temelden oluşturmanızı önerir. Docker tabanınızı sıfırdan oluşturmak da mümkündür. Bu bölümde iki seçenek açıklanmaktadır.

1. Seçenek Databricks tarafından oluşturulan bir temel kullanma

Bu örnekte, Databricks Runtime 9.1 LTS ve üzeri çalışma zamanı sürümüne sahip bir işlem hedefleyecek bir görüntünün etiketi kullanılır 9.x :

FROM databricksruntime/standard:9.x
...

Pandas ve urllib'in en son sürümü gibi ek Python kitaplıkları belirtmek için kapsayıcıya özgü sürümünü pipkullanın. Kapsayıcı için databricksruntime/standard:9.x aşağıdakileri ekleyin:

RUN /databricks/python3/bin/pip install pandas
RUN /databricks/python3/bin/pip install urllib3

Kapsayıcı için databricksruntime/standard:8.x veya daha düşük bir sürüm için aşağıdakileri ekleyin:

RUN /databricks/conda/envs/dcs-minimal/bin/pip install pandas
RUN /databricks/conda/envs/dcs-minimal/bin/pip install urllib3

Temel görüntüler adresinde Docker Hub'da https://hub.docker.com/u/databricksruntimebarındırılır. Bu temelleri oluşturmak için kullanılan Dockerfiles konumundadır https://github.com/databricks/containers.

Not

"-LTS" son ekine sahip Etiketlere sahip Docker Hub'da barındırılan görüntülere düzeltme eki eklenir. Diğer tüm görüntüler örnektir ve düzenli olarak düzeltme eki uygulamaz.

Not

Temel görüntüler databricksruntime/standard ve databricksruntime/minimal artık kullanılamayan Conda (Beta) ile Databricks Runtime'da bulunan ilgisiz databricks-standard ve databricks-minimal ortamlarla karıştırılmamalıdır.

2. Seçenek Kendi Docker tabanınızı oluşturma

Docker tabanınızı sıfırdan da oluşturabilirsiniz. Docker görüntüsü şu gereksinimleri karşılamalıdır:

Sıfırdan kendi görüntünüzü oluşturmak için sanal ortamı oluşturmanız gerekir. Ayrıca Python ve R gibi Databricks işlemlerinde yerleşik paketleri de eklemeniz gerekir. Başlamak için uygun temel görüntüyü kullanabilirsiniz:

  • R için: databricksruntime/rbase
  • Python için: databricksruntime/python
  • Databricks tarafından oluşturulan minimum görüntü için: databricksruntime/minimal

GitHub'daki Dockerfiles örneğine de başvurabilirsiniz.

Not

Databricks, Ubuntu Linux kullanılmasını önerir; ancak Alpine Linux kullanmak mümkündür. Alpine Linux'ı kullanmak için şu dosyaları eklemeniz gerekir:

Buna ek olarak, bu örnekte gösterildiği gibi Dockerfile'ı da ayarlamanız gerekir.

Uyarı

Azure Databricks işlemlerinde özel kapsayıcı görüntünüzü kapsamlı bir şekilde test edin. Kapsayıcınız yerel makinede veya derleme makinesinde çalışabilir, ancak Azure Databricks'te kapsayıcınız başlatıldığında işlem başlatma işlemi başarısız olabilir, bazı özellikler devre dışı bırakılabilir veya kapsayıcınız sessiz de olsa çalışmayı durdurabilir. En kötü senaryolarda verilerinizi bozabilir veya verilerinizi yanlışlıkla dış taraflara açıklayabilir.

2. Adım: Temel görüntünüzü gönderme

Özel temel görüntünüzü bir Docker kayıt defterine gönderin. Bu işlem aşağıdaki kayıt defterleriyle desteklenir:

Kimlik doğrulaması veya temel kimlik doğrulaması içermeyen diğer Docker kayıt defterlerinin de çalışması beklenir.

Not

Docker kayıt defteriniz için Docker Hub kullanıyorsanız hız sınırlarının altı saatlik bir süre içinde başlatmayı beklediğiniz işlem miktarına uygun olup olmadığını kontrol edin. Bu hız sınırları anonim kullanıcılar, ücretli aboneliği olmayan kimliği doğrulanmış kullanıcılar ve ücretli abonelikler için farklıdır. Ayrıntılar için Docker belgelerine bakın. Bu sınır aşılırsa "429 Çok Fazla İstek" yanıtı alırsınız.

3. Adım: İşleminizi başlatma

İşleminizi kullanıcı arabirimini veya API'yi kullanarak başlatabilirsiniz.

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

  1. İşlem oluştur sayfasında Databricks Container Services'ı destekleyen bir Databricks Runtime Sürümü belirtin.

  2. Gelişmiş seçenekler'in altında Docker sekmesini seçin.

  3. Kendi Docker kapsayıcınızı kullan'ı seçin.

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

    Docker görüntüsü URL'si örnekleri:

    Kayıt Defteri Etiket biçimi
    Docker Hub <organization>/<repository>:<tag> (örneğin: databricksruntime/standard:latest)
    Azure Container Registry <your-registry-name>.azurecr.io/<repository-name>:<tag>
  5. Kimlik doğrulama türünü seçin. Kullanıcı adı ve parola kimlik doğrulaması değerlerini depolamak için gizli dizileri kullanabilirsiniz. Bkz . Kimlik doğrulaması için gizli dizileri kullanma.

API'yi kullanarak işlem başlatma

  1. API belirteci oluşturma.

  2. Özel Docker tabanınızla işlem başlatmak için Kümeler API'sini kullanın.

    curl -X POST -H "Authorization: Bearer <token>" https://<databricks-instance>/api/2.0/clusters/create -d '{
      "cluster_name": "<cluster-name>",
      "num_workers": 0,
      "node_type_id": "Standard_DS3_v2",
      "docker_image": {
        "url": "databricksruntime/standard:latest",
        "basic_auth": {
          "username": "<docker-registry-username>",
          "password": "<docker-registry-password>"
        }
      },
      "spark_version": "7.3.x-scala2.12",
    }'
    

    basic_auth gereksinimleri Docker görüntü türünüze bağlıdır:

    • Genel Docker görüntüleri için alanını eklemeyinbasic_auth.
    • Özel Docker görüntüleri için, kullanıcı adı ve parola olarak hizmet sorumlusu kimliği ve parola kullanarak alanını eklemeniz basic_auth gerekir.
    • Azure Container Registry için, alanı bir hizmet sorumlusunun kimliği ve parolası olarak ayarlamanız basic_auth gerekir. Hizmet sorumlusu oluşturma hakkında bilgi için bkz . Azure Container Registry hizmet sorumlusu kimlik doğrulaması belgeleri .
    • Kimlik doğrulama bilgilerini depolamak için gizli dizi de kullanabilirsiniz. Bkz . Kimlik doğrulaması için gizli dizileri kullanma.

Init betiği kullanma

Databricks Container Services, müşterilerin Docker kapsayıcısına init betikleri eklemesini sağlar. Çoğu durumda, doğrudan Docker aracılığıyla (Dockerfile kullanarak) başlatma betiklerinden kaçınmanız ve bunun yerine özelleştirmeler yapmanız gerekir. Ancak, kapsayıcının ne zaman oluşturulduğu yerine kapsayıcı başlatıldığında belirli görevlerin yürütülmesi gerekir. Bu görevler için bir init betiği kullanın.

Örneğin, özel bir kapsayıcı içinde bir güvenlik daemon'u çalıştırmak istediğinizi varsayalım. Görüntü derleme işlem hattınız aracılığıyla Docker görüntüsünde daemon'u yükleyin ve derleyin. Ardından, daemon'ı başlatan bir init betiği ekleyin. Bu örnekte, init betiği gibi systemctl start my-daemonbir satır içerebilir.

API'de, işlem belirtiminin bir parçası olarak init betiklerini aşağıdaki gibi belirtebilirsiniz. Daha fazla bilgi için bkz. Kümeler API'si.

"init_scripts": [
    {
        "file": {
            "destination": "file:/my/local/file.sh"
        }
    }
]

Databricks Container Services görüntüleri için init betiklerini bulut depolama alanında da depolayabilirsiniz.

Databricks Container Services kullanan bir işlem başlattığınızda aşağıdaki adımlar gerçekleşir:

  1. VM'ler bulut sağlayıcısından alınır.
  2. Özel Docker görüntüsü deponuzdan indirilir.
  3. Azure Databricks, görüntüden bir Docker kapsayıcısı oluşturur.
  4. Databricks Runtime kodu Docker kapsayıcısına kopyalanır.
  5. Init betikleri yürütülür. Bkz. Başlatma betikleri nedir?.

Azure Databricks, Docker'ı CMD ve ENTRYPOINT ilkelleri yoksayar.

Kimlik doğrulaması için gizli dizileri kullanma

Databricks Container Service, kimlik doğrulaması için gizli dizileri kullanmayı destekler. İşlem kaynağınızı oluştururken, düz metin kullanıcı adınızı veya parolanızı girmek yerine, biçimini kullanarak {{secrets/<scope-name>/<dcs-secret>}} gizli dizinizi girin. Gizli dizi oluşturma hakkında bilgi için bkz . Gizli diziler.

Kapsayıcı Hizmetlerini Etkinleştirme

İşleminizde özel kapsayıcıları kullanmak için çalışma alanı yöneticisinin Databricks Container Services'ı etkinleştirmesi gerekir.

Çalışma alanı yöneticileri, Çalışma Alanı yapılandırma API'sini kullanarak Databricks Container Service'i etkinleştirebilir. Bir JSON istek gövdesinde, aşağıdaki örnekte olduğu gibi olarak truebelirtinenableDcs:

curl -X PATCH -n \
  https://<databricks-instance>/api/2.0/workspace-conf \
  -d '{
    "enableDcs": "true"
    }'