Tárolók testreszabása a Databricks Container Service használatával

A Databricks Container Services lehetővé teszi egy Docker-rendszerkép megadását a számítás létrehozásakor. Néhány példa használati eset:

  • Tár testreszabása: teljes mértékben szabályozhatja a telepíteni kívánt rendszertárakat.
  • Arany tárolókörnyezet: a Docker-rendszerkép egy zárolt környezet, amely soha nem változik.
  • Docker CI/CD-integráció: Az Azure Databricks integrálható a Docker CI/CD-folyamatokkal.

Docker-rendszerképekkel egyéni mélytanulási környezeteket is létrehozhat a GPU-eszközökkel történő számításhoz. A GPU-számítás a Databricks Container Services szolgáltatással való használatával kapcsolatos további információkért lásd a Databricks Container Servicest GPU-számításon.

Ha a feladatokat a tároló minden indításakor végre szeretné hajtani, használjon init szkriptet.

Követelmények

  • Az Azure Databricks-munkaterületen engedélyezve kell lennie a Databricks Container Services szolgáltatásnak.
  • A gépnek egy legutóbbi Docker-démont kell futtatnia (amely tesztelve van, és az ügyfél/kiszolgáló 18.03.0-ce-es verziójával működik), és a docker parancsnak elérhetőnek kell lennie az Ön PATHszámítógépén.

Korlátozások

  • A Databricks Container Services nem támogatott a megosztott hozzáférési móddal végzett számítás során.
  • A Databricks Runtime for Machine Tanulás nem támogatja a Databricks Container Services szolgáltatást.
  • A Databricks Container Services köteteinek eléréséhez adja hozzá a következő konfigurációt a számítás Spark-konfigurációs mezőjéhez: spark.databricks.unityCatalog.volumes.enabled true.

1. lépés: Az alap létrehozása

A Databricks azt javasolja, hogy a Docker-bázist egy olyan bázisból hozza létre, amelyet a Databricks készített és tesztelt. A Docker-bázist az alapoktól is létrehozhatja. Ez a szakasz a két lehetőséget ismerteti.

1. lehetőség: A Databricks által létrehozott alap használata

Ez a példa egy 9.x olyan rendszerkép címkéjét használja, amely a Databricks Runtime 9.1 LTS-es és újabb futtatókörnyezeti verziójú számításokat célozza meg:

FROM databricksruntime/standard:9.x
...

További Python-kódtárak, például a pandas és az urllib legújabb verziójának megadásához használja a tárolóspecifikus verziót pip. A tárolóhoz databricksruntime/standard:9.x adja meg a következőket:

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

A tároló vagy az databricksruntime/standard:8.x alsó tároló esetében adja meg a következőket:

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

Az alaplemezképek a Docker Hubon találhatók: https://hub.docker.com/u/databricksruntime. A bázisok létrehozásához használt Dockerfile-fájlok a következő helyen https://github.com/databricks/containerstalálhatók: .

Feljegyzés

A Docker Hub "-LTS" utótaggal ellátott címkékkel ellátott lemezképei ki lesznek javítva. Minden más kép példa, és nincsenek rendszeresen javítva.

Feljegyzés

Az alaprendszerképek databricksruntime/standarddatabricksruntime/minimal nem tévesztendők össze a már nem elérhető Databricks Runtime és databricks-minimal a Conda (bétaverzió) nem databricks-standard elérhető környezeteivel.

2. lehetőség: Saját Docker-bázis létrehozása

A Docker-bázist az alapoktól is létrehozhatja. A Docker-rendszerképnek meg kell felelnie az alábbi követelményeknek:

Ahhoz, hogy saját rendszerképet hozzon létre az alapoktól, létre kell hoznia a virtuális környezetet. Olyan csomagokat is tartalmaznia kell, amelyek beépítettek a Databricks-számításba, például a Pythonba és az R-be. Első lépésként használhatja a megfelelő alaprendszerképet:

  • R esetén: databricksruntime/rbase
  • Python esetén: databricksruntime/python
  • A Databricks által készített minimális rendszerképhez: databricksruntime/minimal

A GitHubon található dockerfile-okra is hivatkozhat.

Feljegyzés

A Databricks az Ubuntu Linux használatát javasolja; azonban az Alpine Linuxot is használhatja. Az Alpine Linux használatához a következő fájlokat kell tartalmaznia:

Emellett be kell állítania a Pythont, ahogy az ebben a példában látható Dockerfile-ban látható.

Figyelmeztetés

Tesztelje alaposan az egyéni tárolórendszerképet egy Azure Databricks-számításon. Előfordulhat, hogy a tároló egy helyi vagy buildelési gépen működik, de ha a tárolót az Azure Databricksben indítják el, a számítási indítás sikertelen lehet, bizonyos funkciók le lesznek tiltva, vagy a tároló működésképtelenné válhat, akár csendben is. Legrosszabb esetben az adatok megsérülhetnek, vagy véletlenül közzétehetik az adatokat külső felek számára.

2. lépés: Az alaprendszerkép leküldése

Küldje le az egyéni alaprendszerképet egy Docker-beállításjegyzékbe. Ezt a folyamatot a következő regisztrációs adatbázisok támogatják:

Más Docker-regisztrációs adatbázisok is működni fognak, amelyek nem támogatják a hitelesítést vagy az alapszintű hitelesítést.

Feljegyzés

Ha a Docker Hubot használja a Docker-beállításjegyzékhez, győződjön meg arról, hogy a sebességkorlátok megfelelnek a várhatóan hatórás időszakban elindulni kívánt számítási mennyiségnek. Ezek a díjkorlátok eltérőek a névtelen felhasználók, a fizetős előfizetéssel nem rendelkező hitelesített felhasználók és a fizetős előfizetések esetében. Részletekért tekintse meg a Docker dokumentációját . Ha túllépi ezt a korlátot, "429 Túl sok kérés" választ kap.

3. lépés: A számítás indítása

A számítást a felhasználói felületen vagy az API-val indíthatja el.

A számítás indítása a felhasználói felületen

  1. A Számítási adatok létrehozása lapon adjon meg egy Databricks Runtime-verziót, amely támogatja a Databricks Container Servicest.

  2. A Speciális beállítások területen válassza a Docker lapot.

  3. Válassza a Saját Docker-tároló használata lehetőséget.

  4. A Docker-rendszerkép URL-cím mezőjébe írja be az egyéni Docker-rendszerképet.

    Példák a Docker-rendszerkép URL-címének használatára:

    Beállításjegyzék Címkeformátum
    Docker Hub <organization>/<repository>:<tag> (például: databricksruntime/standard:latest)
    Azure Container Registry <your-registry-name>.azurecr.io/<repository-name>:<tag>
  5. Válassza ki a hitelesítési típust.

Indítsa el a számítást az API használatával

  1. API-jogkivonat létrehozása.

  2. A Clusters API használatával elindíthat egy számítást az egyéni Docker-bázissal.

    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 a követelmények a Docker-rendszerkép típusától függenek:

    • Nyilvános Docker-rendszerképek esetén ne tartalmazza a basic_auth mezőt.
    • Privát Docker-rendszerképek esetén a basic_auth mezőt a felhasználónév és jelszó használatával kell megadnia.
    • Az Azure Container Registry esetében a mezőt egy basic_auth szolgáltatásnév azonosítójára és jelszavára kell beállítania. A szolgáltatásnév létrehozásával kapcsolatos információkért tekintse meg az Azure Container Registry szolgáltatásnév-hitelesítési dokumentációját .

Init-szkript használata

A Databricks Container Services lehetővé teszi az ügyfelek számára, hogy init-szkripteket vegyenek fel a Docker-tárolóba. A legtöbb esetben el kell kerülnie az init szkripteket, és ehelyett közvetlenül a Dockeren keresztül kell testre szabnia őket (a Dockerfile használatával). Bizonyos feladatokat azonban a tároló indításakor kell végrehajtani a tároló létrehozása helyett. Használjon init szkriptet ezekhez a feladatokhoz.

Tegyük fel például, hogy biztonsági démont szeretne futtatni egy egyéni tárolóban. Telepítse és hozza létre a démont a Docker-lemezképben a képkészítési folyamaton keresztül. Ezután adjon hozzá egy init szkriptet, amely elindítja a démont. Ebben a példában az init szkript egy olyan sort tartalmaz, mint a systemctl start my-daemon.

Az API-ban az alábbiak szerint adhatja meg az init-szkripteket a számítási specifikáció részeként. További információ: Clusters API.

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

Databricks Container Services-rendszerképek esetén init-szkripteket is tárolhat a felhőbeli tárolóban.

A Databricks Container Servicest használó számítás indításakor a következő lépések történnek:

  1. A virtuális gépeket a felhőszolgáltató szerzi be.
  2. Az egyéni Docker-rendszerképet a rendszer letölti az adattárból.
  3. Az Azure Databricks létrehoz egy Docker-tárolót a rendszerképből.
  4. A Databricks Runtime-kód át lesz másolva a Docker-tárolóba.
  5. A rendszer végrehajtja az init szkripteket. Lásd: Mik azok az init szkriptek?.

Az Azure Databricks figyelmen kívül hagyja a Dockert CMD és ENTRYPOINT a primitíveket.

Tárolószolgáltatások engedélyezése

Ha egyéni tárolókat szeretne használni a számításhoz, a munkaterület rendszergazdáinak engedélyeznie kell a Databricks Container Services szolgáltatást.

A munkaterület rendszergazdái a Munkaterület konfigurációs API-val engedélyezhetik a Databricks Container Service szolgáltatást. Egy JSON-kérelem törzsében adja meg enableDcs a következőt true:

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