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 ÖnPATH
szá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 Learning 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/standard
databricksruntime/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:
- JDK 8u191 mint Java a rendszeren
PATH
- bash
- iproute2 (ubuntu iproute)
- coreutils (ubuntu coreutils)
- procps (ubuntu procps)
- sudo (ubuntu sudo)
- Ubuntu Linux
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:
- Docker Hub hitelesítés és alapszintű hitelesítés nélkül.
- Azure Container Registry alapszintű hitelesítéssel.
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
A Számítási adatok létrehozása lapon adjon meg egy Databricks Runtime-verziót, amely támogatja a Databricks Container Servicest.
A Speciális beállítások területen válassza a Docker lapot.
Válassza a Saját Docker-tároló használata lehetőséget.
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>
Válassza ki a hitelesítés típusát. Titkos kódokkal tárolhatja a felhasználónevet és a jelszó-hitelesítési értékeket. Lásd: Titkos kódok használata hitelesítéshez.
Indítsa el a számítást az API használatával
API-jogkivonat létrehozása.
A Databricks parancssori felületével elindíthat egy számítást az egyéni Docker-bázissal.
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" }'
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 . - Titkos kóddal is tárolhatja a hitelesítési adatokat. Lásd: Titkos kódok használata hitelesítéshez.
- Nyilvános Docker-rendszerképek esetén ne tartalmazza a
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:
- A virtuális gépeket a felhőszolgáltató szerzi be.
- Az egyéni Docker-rendszerképet a rendszer letölti az adattárból.
- Az Azure Databricks létrehoz egy Docker-tárolót a rendszerképből.
- A Databricks Runtime-kód át lesz másolva a Docker-tárolóba.
- 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.
Titkos kódok használata hitelesítéshez
A Databricks Container Service támogatja a titkos kódok használatát a hitelesítéshez. A számítási erőforrás létrehozásakor ahelyett, hogy egyszerű szöveges felhasználónevet vagy jelszót ad meg, adja meg a titkos kódját a {{secrets/<scope-name>/<dcs-secret>}}
formátum használatával. A titkos kódok létrehozásáról további információt a Titkos kódok című témakörben talál.
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 Databricks parancssori felületével engedélyezhetik a Databricks Container Service szolgáltatást. Egy JSON-kérelem törzsében adja meg enableDcs
a következőt true
:
databricks workspace-conf set-status \
--json '{"enableDcs": "true"}'