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

Not

Standart erişim modu işlemi için Databricks Container Services'ın Beta sürümü de kullanılabilir. Standart işlem için bkz. Databricks Container Services.

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şlem kaynaklarını kullanma hakkında ek bilgi için GPU işlem kaynaklarında Databricks Container Services bölümüne bakın.

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 güncel bir Docker daemon’u (test edilmiş ve İstemci/Sunucu sürümü 18.03.0-ce ile çalışan) çalışıyor olmalı ve docker komutu PATH üzerinde kullanılabilir olmalıdır.

Sınırlamalar

  • Machine Learning için Databricks Runtime, Databricks Container Services'ı desteklemez.
  • Databricks Container Services'teki birimlere erişmek için, Spark'ın yapılandırma alanına aşağıdaki yapılandırmayı ekleyin: .
  • Databricks Container Services üzerinde birleştirilmiş Hive meta veri depolarına erişmek için, hesap Spark yapılandırma alanına aşağıdaki yapılandırmayı ekleyin: .
  • 172.17.0.0/16, Docker tarafından kullanılan varsayılan IP aralığıdır. IP çakışması nedeniyle bağlantı sorunlarını önlemek için bu alt ağda kaynak ayarlamaktan kaçının.
  • Databricks Container Services notebook kimlik doğrulamasını desteklemez.

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

Databricks Runtime 16.4 LTS ile bir bilgisayarı hedef alan bir görüntü için 16.4-LTS etiketi bu örnekte kullanılır.

FROM databricksruntime/standard:16.4-LTS
...

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. databricksruntime/standard:16.4-LTS kapsayıcısı için aşağıdakileri ekleyin:

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

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

Not

Docker Hub'da barındırılan ve "-LTS" son ekine sahip etiketleri bulunan imajlar yamalanacaktır. Diğer tüm imajlar yalnızca örnek amaçlıdır ve düzenli olarak yamalanmaz.

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:

Not

JDK'yi hedef Databricks Runtime sürümünüzün varsayılan Java sürümüyle eşleştirin. Belirli bir çalışma zamanına dahil edilen tam JDK sürümü için bu çalışma zamanı sürümünün sürüm notları bölümüne bakın.

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:

Ayrıca, bu örnekte gösterildiği gibi, Python'ı Dockerfileile ayarlamanız gerekir.

Uyarı

Özel kapsayıcı imajınızı bir Azure Databricks işlem kaynağında iyice 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 defterleri kullanılarak 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ş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 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 (Azure Konteyner Kayıt Defteri) <your-registry-name>.azurecr.io/<repository-name>:<tag>
  5. Kimlik doğrulama türünü seçin. Kullanıcı adı ve parola kimlik doğrulama değerlerini saklamak için gizli bilgiler kullanabilirsiniz. Docker görüntü kimlik doğrulaması için bkz. .

API'yi kullanarak işlem başlatma

  1. Bir API belirtecioluştur.

  2. Databricks CLI kullanarak özel Docker tabanınızla işlem başlatın.

    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"
    }'
    

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.

Init betiği kullanın

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, bazı görevlerin kapsayıcı oluşturulurken değil, kapsayıcı başlatıldığında 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, başlatma betiği systemctl start my-daemon gibi bir satır içerirdi.

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. Başlatma betikleri çalıştırılır. Bkz. Başlatma betikleri nedir?.

Azure Databricks, Docker'ın CMD ve ENTRYPOINT temel öğelerini yok sayar.

Kapsayıcı Hizmetlerini Etkinleştir

Çalışma alanı yöneticisi, Databricks Container Services'ın çalışma alanı için etkinleştirilip etkinleştirilmediğini denetleyebilir.

Çalışma alanı yöneticileri Databricks CLI kullanarak Databricks Container Service'in etkinleştirilmesini değiştirebilir. Bir JSON istek gövdesinde, aşağıdaki örnekte olduğu gibi, enableDcs ile true belirtin:

databricks workspace-conf set-status \
--json '{"enableDcs": "true"}'