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 üzerindePATH
kullanılabilir olmalıdır.
Sınırlamalar
- Databricks Container Services, standart erişim modu (eski adıyla paylaşılan erişim modu) kullanılarak işlemde desteklenmez.
- Machine Learning için Databricks Runtime, Databricks Container Services'ı desteklemez.
- Databricks Container Services içindeki Veri Birimlerine erişmek için, hesaplama Spark yapılandırması alanına aşağıdaki yapılandırmayı ekleyin:
spark.databricks.unityCatalog.volumes.enabled true
. -
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.
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ü pip
kullanı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 https://github.com/databricks/containerskonumundadır.
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:
- Sistemde Java olarak JDK 8u191
PATH
- bash
- iproute2 (ubuntu iproute)
- coreutils (ubuntu coreutils)
- procps (ubuntu procps)
- sudo (ubuntu sudo)
- Ubuntu Linux
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ı
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ı olmayan Docker Hub .
- Temel kimlik doğrulaması ile Azure Container Registry .
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
İşlem oluştur sayfasında Databricks Container Services'ı destekleyen bir Databricks Runtime Sürümü belirtin.
Gelişmişbölümünde, Docker sekmesini seçin.
Kendi Docker kapsayıcınızı kullanseçeneğini belirleyin.
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>
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
Bir API belirtecioluştur.
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": "14.3.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 dizileri 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
basic_auth
alanlarını dahil etmeyin. - Ö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 sorumlusu oluşturma hakkında bilgi için bkz . Azure Container Registry hizmet sorumlusu kimlik doğrulaması belgeleri .
Kimlik doğrulaması için gizli dizileri kullanma
Databricks Container Service, kimlik doğrulaması için gizli dizileri kullanmayı 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 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-daemon
bir 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:
- VM'ler bulut sağlayıcısından alınır.
- Özel Docker görüntüsü deponuzdan indirilir.
- Azure Databricks, görüntüden bir Docker kapsayıcısı oluşturur.
- Databricks Runtime kodu Docker kapsayıcısına kopyalanır.
- Init betikleri yürütülür. Bkz. Başlatma betikleri nedir?.
Azure Databricks, Docker'ı CMD
ve ENTRYPOINT
ilkelleri yoksayar.
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 Databricks CLI kullanarak Databricks Container Service'i etkinleştirebilir. Bir JSON istek gövdesinde, aşağıdaki örnekte olduğu gibi olarak enableDcs
belirtintrue
:
databricks workspace-conf set-status \
--json '{"enableDcs": "true"}'