تخصيص الحاويات باستخدام Databricks Container Service

تتيح لك Databricks Container Services تحديد صورة Docker عند إنشاء حساب. تتضمن بعض أمثلة حالات الاستخدام ما يلي:

  • تخصيص المكتبة: لديك تحكم كامل في مكتبات النظام التي تريد تثبيتها.
  • بيئة الحاوية الذهبية: صورة Docker الخاصة بك هي بيئة مؤمنة لن تتغير أبدا.
  • تكامل Docker CI/CD: يمكنك دمج Azure Databricks مع مسارات Docker CI/CD.

يمكنك أيضا استخدام صور Docker لإنشاء بيئات تعلم عميق مخصصة على الحساب مع أجهزة GPU. للحصول على معلومات إضافية حول استخدام حساب GPU مع Databricks Container Services، راجع Databricks Container Services على حساب GPU.

لتنفيذ المهام في كل مرة تبدأ فيها الحاوية، استخدم البرنامج النصي init.

المتطلبات

  • يجب أن تحتوي مساحة عمل Azure Databricks على Databricks Container Services ممكنة.
  • يجب أن يقوم جهازك بتشغيل برنامج Docker الخفي الأخير (الذي يتم اختباره ويعمل مع Client/Server الإصدار 18.03.0-ce) docker ويجب أن يكون الأمر متوفرا على .PATH

القيود

  • خدمات حاوية Databricks غير مدعومة في الحوسبة باستخدام وضع الوصول المشترك.
  • لا يدعم وقت تشغيل Databricks ل التعلم الآلي Databricks Container Services.
  • للوصول إلى وحدات التخزين على Databricks Container Services، أضف التكوين التالي إلى حقل تكوين Spark للحساب: spark.databricks.unityCatalog.volumes.enabled true.

الخطوة 1: بناء القاعدة الخاصة بك

توصي Databricks بإنشاء قاعدة Docker الخاصة بك من قاعدة قامت Databricks ببنائها واختبارها. من الممكن أيضا بناء قاعدة Docker الخاصة بك من البداية. يصف هذا القسم الخيارين.

الخيار 1. استخدام قاعدة تم إنشاؤها بواسطة Databricks

يستخدم 9.x هذا المثال علامة لصورة ستستهدف حسابا بإصدار وقت التشغيل Databricks Runtime 9.1 LTS وما فوق:

FROM databricksruntime/standard:9.x
...

لتحديد مكتبات Python إضافية، مثل أحدث إصدار من pandas وurllib، استخدم الإصدار الخاص بالحاويات من pip. بالنسبة للحاوية databricksruntime/standard:9.x ، قم بتضمين ما يلي:

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

بالنسبة للحاوية databricksruntime/standard:8.x أو أقل، قم بتضمين ما يلي:

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

تتم استضافة الصور الأساسية على Docker Hub في https://hub.docker.com/u/databricksruntime. ملفات Dockerfiles المستخدمة لإنشاء هذه القواعد موجودة في https://github.com/databricks/containers.

إشعار

سيتم تصحيح الصور المستضافة في Docker Hub مع العلامات ذات لاحقة "-LTS". جميع الصور الأخرى هي أمثلة ولا يتم تصحيحها بانتظام.

إشعار

لا يجب الخلط بين الصور databricksruntime/standard الأساسية والبيئات databricksruntime/minimal غير المرتبطة databricks-standard والبيئات databricks-minimal المضمنة في وقت تشغيل Databricks الذي لم يعد متوفرا مع Conda (بيتا).

الخيار 2. بناء قاعدة Docker الخاصة بك

يمكنك أيضا بناء قاعدة Docker الخاصة بك من البداية. يجب أن تفي صورة Docker بهذه المتطلبات:

لإنشاء صورتك الخاصة من البداية، يجب إنشاء البيئة الظاهرية. يجب عليك أيضا تضمين الحزم المضمنة في حساب Databricks، مثل Python وR. للبدء، يمكنك استخدام الصورة الأساسية المناسبة:

  • بالنسبة إلى R: databricksruntime/rbase
  • بالنسبة إلى Python: databricksruntime/python
  • للحصول على الحد الأدنى من الصورة التي تم إنشاؤها بواسطة Databricks: databricksruntime/minimal

يمكنك أيضا الرجوع إلى مثال Dockerfiles في GitHub.

إشعار

توصي Databricks باستخدام Ubuntu Linux؛ ومع ذلك، فمن الممكن استخدام Alpine Linux. لاستخدام Alpine Linux، يجب تضمين هذه الملفات:

بالإضافة إلى ذلك، يجب إعداد Python، كما هو موضح في هذا المثال Dockerfile.

تحذير

اختبر صورة الحاوية المخصصة بدقة على حساب Azure Databricks. قد تعمل الحاوية الخاصة بك على جهاز محلي أو جهاز بناء، ولكن عند تشغيل الحاوية الخاصة بك على Azure Databricks، قد يفشل تشغيل الحساب، أو قد تصبح بعض الميزات معطلة، أو قد تتوقف الحاوية عن العمل، حتى بصمت. في أسوأ السيناريوهات، قد يؤدي ذلك إلى إفساد بياناتك أو عرض بياناتك عن طريق الخطأ لأطراف خارجية.

الخطوة 2: دفع الصورة الأساسية

ادفع الصورة الأساسية المخصصة إلى سجل Docker. هذه العملية مدعومة بالسجلات التالية:

ومن المتوقع أيضا أن تعمل سجلات Docker الأخرى التي لا تدعم المصادقة أو المصادقة الأساسية.

إشعار

إذا كنت تستخدم Docker Hub لسجل Docker الخاص بك، فتأكد من التحقق من أن حدود المعدل تستوعب مقدار الحساب الذي تتوقع تشغيله في فترة ست ساعات. تختلف حدود الأسعار هذه للمستخدمين المجهولين، والمستخدمين المصادق عليهم دون اشتراك مدفوع، والاشتراكات المدفوعة. راجع وثائق Docker للحصول على التفاصيل. إذا تم تجاوز هذا الحد، فستحصل على استجابة "429 طلبات كثيرة جدا".

الخطوة 3: تشغيل الحساب الخاص بك

يمكنك تشغيل الحساب الخاص بك باستخدام واجهة المستخدم أو واجهة برمجة التطبيقات.

تشغيل الحساب الخاص بك باستخدام واجهة المستخدم

  1. في صفحة Create compute، حدد Databricks Runtime Version الذي يدعم Databricks Container Services.

  2. ضمن خيارات متقدمة، حدد علامة التبويب Docker .

  3. حدد استخدام حاوية Docker الخاصة بك.

  4. في حقل Docker Image URL ، أدخل صورة Docker المخصصة.

    أمثلة على عنوان URL لصورة Docker:

    السجل تنسيق العلامة
    Docker Hub <organization>/<repository>:<tag> (على سبيل المثال: databricksruntime/standard:latest)
    Azure Container Registry <your-registry-name>.azurecr.io/<repository-name>:<tag>
  5. حدد نوع المصادقة.

تشغيل الحساب الخاص بك باستخدام واجهة برمجة التطبيقات

  1. إنشاء رمز مميز لواجهة برمجة التطبيقات.

  2. استخدم واجهة برمجة تطبيقات المجموعات لتشغيل حساب مع قاعدة Docker المخصصة.

    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 تعتمد المتطلبات على نوع صورة Docker:

    • بالنسبة لصور Docker العامة، لا تقم بتضمين basic_auth الحقل.
    • بالنسبة لصور Docker الخاصة، يجب تضمين basic_auth الحقل، باستخدام معرف كيان الخدمة وكلمة المرور باسم المستخدم وكلمة المرور.
    • بالنسبة إلى Azure Container Registry، يجب تعيين basic_auth الحقل إلى المعرف وكلمة المرور لكيان الخدمة. راجع وثائق المصادقة الأساسية لخدمة Azure Container Registry للحصول على معلومات حول إنشاء كيان الخدمة.

استخدام برنامج نصي init

تمكن Databricks Container Services العملاء من تضمين البرامج النصية init في حاوية Docker. في معظم الحالات، يجب تجنب البرامج النصية init وإجراء التخصيصات بدلا من ذلك من خلال Docker مباشرة (باستخدام Dockerfile). ومع ذلك، يجب تنفيذ مهام معينة عند بدء تشغيل الحاوية، بدلا من عند إنشاء الحاوية. استخدم برنامج نصي init لهذه المهام.

على سبيل المثال، افترض أنك تريد تشغيل برنامج أمان خفي داخل حاوية مخصصة. قم بتثبيت وبناء البرنامج الخفي في صورة Docker من خلال البنية الأساسية لبرنامج ربط العمليات التجارية لبناء الصور. ثم أضف نص init الذي يبدأ البرنامج الخفي. في هذا المثال، سيتضمن البرنامج النصي init سطرا مثل systemctl start my-daemon.

في واجهة برمجة التطبيقات، يمكنك تحديد البرامج النصية init كجزء من مواصفات الحساب كما يلي. لمزيد من المعلومات، راجع واجهة برمجة تطبيقات أنظمة المجموعات.

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

بالنسبة إلى صور Databricks Container Services، يمكنك أيضا تخزين البرامج النصية init في التخزين السحابي.

تحدث الخطوات التالية عند تشغيل حساب يستخدم Databricks Container Services:

  1. يتم الحصول على الأجهزة الظاهرية من موفر السحابة.
  2. يتم تنزيل صورة Docker المخصصة من المستودع الخاص بك.
  3. ينشئ Azure Databricks حاوية Docker من الصورة.
  4. يتم نسخ التعليمات البرمجية لوقت تشغيل Databricks في حاوية Docker.
  5. يتم تنفيذ البرامج النصية init. راجع ما هي البرامج النصية للit؟.

يتجاهل Azure Databricks Docker CMD والبدائيات ENTRYPOINT .

تمكين خدمات الحاويات

لاستخدام حاويات مخصصة على الحساب الخاص بك، يجب على مسؤول مساحة العمل تمكين Databricks Container Services.

يمكن لمسؤولي مساحة العمل تمكين Databricks Container Service باستخدام واجهة برمجة تطبيقات تكوين مساحة العمل. في نص طلب JSON، حدد enableDcs إلى true، كما في المثال التالي:

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