Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A CI/CD (folyamatos integráció és folyamatos teljesítés) a modern adatelemzés és -elemzés sarokköve lett, mivel biztosítja a kódmódosítások gyors és megbízható integrálását, tesztelését és üzembe helyezését. A Databricks felismeri, hogy a különböző CI/CD-követelmények a szervezeti beállítások, a meglévő munkafolyamatok és az adott technológiai környezet alapján vannak kialakítva, és rugalmas keretrendszert biztosít, amely támogatja a különböző CI/CD-beállításokat.
Ez a lap az ajánlott CI-/CD-munkafolyamatokat ismerteti, amelyek segítenek az egyedi igényeknek és korlátozásoknak megfelelő, robusztus, testreszabott CI/CD-folyamatok tervezésében és összeállításában. Ezeket az elemzéseket felhasználva felgyorsíthatja az adatelemzési és elemzési kezdeményezéseket, javíthatja a kódminőséget, és csökkentheti az üzembehelyezési hibák kockázatát.
A CI/CD alapelvei
A hatékony CI/CD-folyamatok a megvalósítási sajátosságoktól függetlenül alapvető alapelveket használnak. Az alábbi általános ajánlott eljárások a szervezeti beállításokra, a fejlesztői munkafolyamatokra és a felhőkörnyezetekre vonatkoznak, és biztosítják a különböző implementációk konzisztenciáját, függetlenül attól, hogy a csapat előnyben részesíti-e a jegyzetfüzetek első fejlesztési vagy infrastruktúra-kódkénti munkafolyamatait. Fogadja el ezeket az alapelveket védőkorlátként, miközben a szervezet technológiai vereméhez és folyamatához szabja a konkrétumokat.
- Verziókövetés mindenben
- Jegyzetfüzeteket, szkripteket, infrastruktúra-definíciókat (IaC) és feladatkonfigurációkat tárol a Gitben.
- Használjon elágaztatási stratégiákat, például a Gitflow-t, amelyek igazodnak a standard fejlesztési, előkészítési és éles üzembehelyezési környezetekhez.
- Tesztelés automatizálása
- Az üzleti logika egységtesztjeinek implementálása kódtárak használatával, például a Python pytestje és a ScalaTest for Scala .
- A jegyzetfüzet és a munkafolyamat funkcióinak ellenőrzése olyan eszközökkel, mint a Databricks CLI-csomag ellenőrzése.
- Integrációs teszteket használhat munkafolyamatokhoz és adatfolyamokhoz, például a Spark DataFrame-hez készült chispa-hoz.
- Infrastruktúra alkalmazása kódként (IaC)
- Fürtök, feladatok és munkaterület-konfigurációk definiálása a DEklaratív automation-csomagok YAML vagy Terraform használatával.
- Paraméterezze a környezetspecifikus beállításokat, mint például a fürt mérete és titkok, ahelyett hogy ezeket kódba ágyazná.
- Környezetek elkülönítése
- Tarts fenn külön munkaterületeket fejlesztéshez, előállításhoz és éles környezethez.
- Az MLflow Modellregisztrációs adatbázis használata a modellek különböző környezetekben történő verziószámozásához.
- Válasszon a felhőbeli ökoszisztémának megfelelő eszközöket:
- Azure: Azure DevOps és Deklaratív automatizálási csomagok vagy Terraform.
- AWS: GitHub Actions és Deklaratív automatizálási csomagok vagy Terraform.
- GCP: Felhőbeli buildelési és deklaratív automatizálási csomagok vagy Terraform.
- Visszaállítások monitorozása és automatizálása
- Az üzembe helyezés sikerességi arányának, a feladatok teljesítményének és a tesztelési lefedettségnek a nyomon követése.
- Automatizált visszaállítási mechanizmusok implementálása sikertelen üzembe helyezésekhez.
- Eszközkezelés egységesítése
- A Deklaratív Automation-csomagok használatával egyetlen egységként telepíthet kódot, feladatokat és infrastruktúrát. Kerülje a jegyzetfüzetek, tárak és munkafolyamatok silózott kezelését.
Note
A Databricks a számítási feladatok identitás-összevonását javasolja a CI/CD-hitelesítéshez. A számítási feladatok identitásának összevonása szükségtelenné teszi a Databricks-titkos kulcsok használatát, így ez a legbiztonságosabb módja az automatizált folyamatok Databricksbe történő hitelesítésének. Lásd: Számítási feladatok identitás-összevonásának engedélyezése a CI/CD-ben.
Deklaratív automatizálási csomagok CI/CD-hez
A Deklaratív Automation-csomagok (korábbi nevén Databricks Asset Bundles) hatékony, egységes megközelítést kínálnak a kód, munkafolyamatok és infrastruktúra Databricks-ökoszisztémán belüli kezeléséhez, és a CI/CD-folyamatokhoz ajánlottak. Ha ezeket az elemeket egyetlen YAML-alapú egységbe alakítja, a csomagok leegyszerűsítik az üzembe helyezést, és biztosítják a környezetek konzisztenciáját. A hagyományos CI/CD-munkafolyamatokhoz szokott felhasználók esetében azonban a csomagok bevezetése a gondolkodásmódváltást igényelheti.
A Java-fejlesztők például a Maven vagy a Gradle használatával készítik el a JARs-eket, egységteszteket futtatnak a JUnittal, és integrálják ezeket a lépéseket CI/CD-folyamatokba. Hasonlóképpen a Python-fejlesztők gyakran csomagolják kódjukat wheel formátumba és pytesttel tesztelnek, míg az SQL-fejlesztők a lekérdezés-ellenőrzésre és a digitális jegyzetek kezelésére összpontosítanak. A kötegekkel ezek a munkafolyamatok strukturáltabb és előíróbb formátumba alakulnak, hangsúlyozva a kód és az infrastruktúra kötegelését a zökkenőmentes üzembe helyezés érdekében.
A következő szakaszok azt vizsgálják, hogyan alakíthatják a fejlesztők a munkafolyamataikat a csomagok hatékony kihasználása érdekében.
A Deklaratív automatizálási csomagok használatának gyors megkezdéséhez próbáljon ki egy oktatóanyagot: Feladat fejlesztése Deklaratív Automation-kötegekkel vagy folyamatok fejlesztése Deklaratív Automation-csomagokkal.
Forrásvezérlő
A csomagok lehetővé teszik, hogy könnyen tartalmazzon mindent – forráskódot, összetevőket és konfigurációs fájlokat –, és ugyanabban a forráskódtárban keresse meg őket, de a csomagkonfigurációs fájlokat a kódhoz kapcsolódó fájloktól is elkülönítheti. A választás a csapat munkafolyamatától, a projekt összetettségétől és a CI/CD-követelményektől függ, de a munkafolyamatok és az ajánlott eljárások megosztásának egyszerűsítése érdekében a Databricks azt javasolja, hogy a kód- és csomagkonfigurációhoz is használjon egyetlen adattárat.
Emellett a Databricks egy csomagtartóalapú elágaztatási stratégiát javasol az egyesítési ütközések minimalizálása érdekében, és biztosítja, hogy a fő ág mindig üzembe helyezhető állapotban legyen, és mindig használjon verziószámozott összetevőket, például a Git véglegesítési kivonatait a Databricksbe vagy külső tárolóba való feltöltéskor a nyomon követhetőség és a visszaállítási képességek biztosítása érdekében.
Ezekről az ajánlott eljárásokról további információt a Forráskövetés című témakörben talál.
CI/CD-munkafolyamat kötegekkel
A Deklaratív Automation-csomagok használatával ajánlott egyszerű munkafolyamat a következő:
- A kód fordítása és tesztelése
- Aktiválódik, amikor húzási kérelem érkezik vagy a fő ágra véglegesítés történik.
- Kód fordítása és egységtesztek futtatása.
- Adjon ki egy verziószámozott fájlt, például
my-app-1.0.jar.
- Töltse fel és tárolja a lefordított fájlt, például egy JAR-t a Databricks Unity Catalog tárterületére.
- Tárolja a lefordított fájlt egy Databricks Unity Catalog-kötetben vagy egy összetevő-adattárban, például az AWS S3-ban vagy az Azure Blob Storage-ban.
- Használjon verziószámozási sémát, amely Git commit hash-okhoz vagy szemantikai verziószámozáshoz kötődik, például
dbfs:/mnt/artifacts/my-app-${{ github.sha }}.jar.
- A csomag ellenőrzése
- Futtassa a
databricks bundle validateparancsot, hogy ellenőrizze adatabricks.ymlkonfiguráció helyességét. - Ez a lépés biztosítja, hogy a helytelen konfigurációk, például a hiányzó kódtárak, korán felismerhetőek legyenek.
- Futtassa a
- A csomag üzembe helyezése
- Használja a
databricks bundle deploycsomagot a csomag üzembe helyezéséhez előkészítési vagy éles környezetben. - Hivatkozás a feltöltött lefordított kódtárra a következőben
databricks.yml: . A hivatkozási kódtárakról további információt a Deklaratív Automation Bundles-kódtár-függőségek című témakörben talál.
- Használja a
CI/CD gépi tanuláshoz
A gépi tanulási projektek egyedi CI/CD-kihívásokat jelentenek a hagyományos szoftverfejlesztéshez képest. A CI/CD gépi tanulási projektekhez való implementálásakor valószínűleg a következőket kell figyelembe vennie:
- Többcsapatos koordináció: Az adattudósok, mérnökök és MLOps-csapatok gyakran különböző eszközöket és munkafolyamatokat használnak. A Databricks egyesíti ezeket a folyamatokat az MLflow-val a kísérletkövetéshez, az OpenSharing for data governancehez és a deklaratív automation-csomagokhoz az infrastruktúra kódként való használatához.
- Adatok és modellek verziószámozása: Az ML-folyamatok nem csak a kód követését igénylik, hanem betanítási adatsémákat, funkcióeloszlásokat és modellösszetevőket is. A Delta Lake ACID-tranzakciókat és időutazást biztosít az adatok verziószámozásához, míg az MLflow Modellregisztrációs adatbázis kezeli a modellkiválasztást.
- Reprodukálhatóság a környezetekben: az ML-modellek adott adatoktól, kódtól és infrastruktúra-kombinációktól függnek. A deklaratív automatizálási csomagok biztosítják ezeknek az összetevőknek az atomi üzembe helyezését a fejlesztési, előkészítési és éles környezetekben, a YAML definíciók használatával.
- Folyamatos újratanítás és monitorozás: A modellek adateltolódás miatt romlanak. A Lakeflow-feladatok lehetővé teszik az automatikus újratanítási folyamatokat, míg az MLflow integrálható a Prometheus és a Databricks adatminőség-monitorozásával a teljesítmény nyomon követéséhez.
MLOps veremek az ML CI/CD-hez
A Databricks az MLOps Stacksen keresztül kezeli az ML CI/CD összetettségét, amely egy éles szintű keretrendszer, amely egyesíti a Deklaratív Automation-csomagokat, az előre konfigurált CI-/CD-munkafolyamatokat és a moduláris ML-projektsablonokat. Ezek a rendszerek előmozdítják a bevált gyakorlatokat, és lehetőséget nyújtanak a rugalmasságra a többcsapatos együttműködésben az adatmérnöki, adattudományi és MLOps-szerepkörökben.
| Team | Responsibilities | Példa kötegösszetevőkre | Példatárgyak |
|---|---|---|---|
| Adatmérnökök | ETL-folyamatok létrehozása, adatminőség kényszerítése | Lakeflow-pipeline-ok YAML, klaszterszabályzatok |
etl_pipeline.yml, feature_store_job.yml |
| Adattudósok | Modellbetanítási logika fejlesztése, metrikák ellenőrzése | MLflow-projektek, jegyzetfüzet-alapú munkafolyamatok |
train_model.yml, batch_inference_job.yml |
| MLOps-mérnökök | Üzembe helyezések vezénylése, folyamatok monitorozása | Környezeti változók, irányítópultok monitorozása |
databricks.yml, lakehouse_monitoring.yml |
Az ML CI/CD együttműködés a következőképpen nézhet ki:
- Az adatmérnökök az ETL-folyamat módosításait kötegekre véglegesítik, automatikus sémaérvényesítést és átmeneti üzembe helyezést aktiválva.
- Az adattudósok ml-kódot küldenek, amely egységteszteket futtat, és üzembe helyez egy átmeneti munkaterületen integrációs tesztelés céljából.
- Az MLOps mérnökei áttekintik az érvényesítési metrikákat, és az MLflow registry használatával előléptetik az ellenőrzött modelleket az éles környezetbe.
A megvalósítás részleteiért lásd:
- MLOps Stacks-csomag: Részletes útmutató a csomagok inicializálásához és üzembe helyezéséhez.
- MLOps Stacks GitHub-adattár: Előre konfigurált sablonok betanításhoz, következtetéshez és CI/CD-hez.
A csapatok szabványosított csomagokhoz és MLOps Stackekhez való igazításával a szervezetek egyszerűsíthetik az együttműködést, miközben az ml-életciklus során megőrzik a naplózási lehetőségeket.
CI/CD SQL-fejlesztőknek
A Databricks SQL-t használó SQL-fejlesztők streamelő táblák és materializált nézetek kezelésére használhatják a Git-integrációt és a CI/CD-folyamatokat a munkafolyamataik egyszerűsítése és a kiváló minőségű folyamatok fenntartása érdekében. A Lekérdezések Git-támogatásának bevezetésével az SQL-fejlesztők a lekérdezések írására összpontosíthatnak, miközben a Gitet a fájlok verziókövetésére .sql használják, ami lehetővé teszi az együttműködést és az automatizálást anélkül, hogy mély infrastruktúra-szakértelemre van szükség. Emellett az SQL-szerkesztő valós idejű együttműködést tesz lehetővé, és zökkenőmentesen integrálható a Git-munkafolyamatokkal.
SQL-központú munkafolyamatok esetén:
Verziókövetési SQL-fájlok
- .sql fájlokat a Git-adattárakban tárolhatja Databricks Git-mappák vagy külső Git-szolgáltatók, például GitHub, Azure DevOps használatával.
- Használjon ágakat (például fejlesztést, előkészítést, éles üzemet) a környezetspecifikus változások kezeléséhez.
A
.sqlfájlok integrálása CI/CD-pipeline-okba az üzembe helyezés automatizálásához:- Szintaxis- és sémaváltozások ellenőrzése lekéréses kérelmek során.
- Fájlok üzembe helyezése
.sqlDatabricks SQL-munkafolyamatokban vagy -feladatokban.
Paraméterezés a környezetelkülönítéshez
A fájlok változóinak
.sqlhasználatával dinamikusan hivatkozhat környezetspecifikus erőforrásokra, például adatelérési utakra vagy táblanevekre:CREATE OR REFRESH STREAMING TABLE ${env}_sales_ingest AS SELECT * FROM read_files('s3://${env}-sales-data')
Frissítések ütemezése és figyelése
- Használja a SQL feladatokat egy Databricks feladatban a táblák és materializált nézetek frissítéseinek ütemezésére (
REFRESH MATERIALIZED VIEW view_name). - Frissítési előzmények figyelése rendszertáblák használatával.
- Használja a SQL feladatokat egy Databricks feladatban a táblák és materializált nézetek frissítéseinek ütemezésére (
A munkafolyamatok a következőek lehetnek:
- Fejlesztés: Szkriptek írása és tesztelése
.sqlhelyileg vagy a Databricks SQL-szerkesztőben, majd véglegesítés egy Git-ágban. - Ellenőrzés: Lekéréses kérelem során ellenőrizze a szintaxist és a sémakompatibilitást automatizált CI-ellenőrzésekkel.
- Üzembe helyezés: Egyesítéskor helyezze üzembe a .sql szkripteket a célkörnyezetben CI/CD-folyamatok, például GitHub Actions vagy Azure Pipelines használatával.
- Monitorozás: A Databricks-irányítópultok és -riasztások használatával nyomon követheti a lekérdezések teljesítményét és az adatok frissességét.
CI/CD irányítópult-fejlesztőknek
A Databricks támogatja az irányítópultok CI/CD-munkafolyamatokba való integrálását deklaratív automatizálási csomagok használatával. Ez a funkció lehetővé teszi az irányítópult-fejlesztők számára a következőket:
- Verziókövetési irányítópultok, amelyek biztosítják az auditálást és leegyszerűsítik a csapatok közötti együttműködést.
- Automatizálja az irányítópultok telepítéseit a feladatok és folyamatok mellett az egyes környezeteken, az elejétől a végéig tartó összhang érdekében.
- Csökkentse a manuális hibákat, és győződjön meg arról, hogy a frissítések következetesen alkalmazhatók a környezetekben.
- Magas színvonalú elemzési munkafolyamatok fenntartása a CI/CD ajánlott eljárásainak betartása mellett.
Ci/CD-irányítópultok esetén:
Használja a parancsot a
databricks bundle generatemeglévő irányítópultok JSON-fájlokként való exportálásához, és hozza létre a csomagot tartalmazó YAML-konfigurációt:resources: dashboards: sales_dashboard: display_name: 'Sales Dashboard' file_path: ./dashboards/sales_dashboard.lvdash.json warehouse_id: ${var.warehouse_id}Ezeket a
.lvdash.jsonfájlokat Git-adattárakban tárolhatja a változások nyomon követéséhez és a hatékony együttműködéshez.Irányítópultok automatikus üzembe helyezése CI/CD-folyamatokban a(z)
databricks bundle deploysegítségével. Például a GitHub Actions üzembe helyezési lépése:name: Deploy Dashboard run: databricks bundle deploy --target=prod env: DATABRICKS_TOKEN: ${{ secrets.DATABRICKS_TOKEN }}Változók használatával például
${var.warehouse_id}paraméterezheti az olyan konfigurációkat, mint az SQL-raktárak vagy az adatforrások, biztosítva a zökkenőmentes üzembe helyezést a fejlesztői, előkészítési és éles környezetekben.A lehetőséggel folyamatosan szinkronizálhatja a
bundle generate --watchhelyi irányítópult JSON-fájljait a Databricks felhasználói felületén végrehajtott módosításokkal. Ha eltérések lépnek fel, az üzembe helyezés során használja a--forcejelzőt a távoli irányítópultok helyi verziókkal való felülírásához.
A csomagokban lévő irányítópultokkal kapcsolatos információkért tekintse meg az irányítópult-erőforrást. A csomagparancsokkal kapcsolatos részletekért tekintse meg bundle a parancscsoportot.