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, 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ü 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 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:
- 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:
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ı 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ş seçenekler'in altında Docker sekmesini seçin.
Kendi Docker kapsayıcınızı kullan'ı seçin.
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ğ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
API belirteci oluşturma.
Ö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ı eklemeyin
basic_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.
- Genel Docker görüntüleri için alanını eklemeyin
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.
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 true
belirtinenableDcs
:
curl -X PATCH -n \
https://<databricks-instance>/api/2.0/workspace-conf \
-d '{
"enableDcs": "true"
}'
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin