De computebibliotheken installeren
Wanneer u notebooks en taken uitvoert op Azure Databricks Compute, hebt u vaak pakketten van derden of aangepaste code nodig die niet is opgenomen in de standaardruntime. Als u bibliotheken op clusterniveau installeert, zorgt u ervoor dat elke notebook en taak die dat rekenproces gebruikt, toegang heeft tot dezelfde afhankelijkheden, waardoor een consistente uitvoeringsomgeving wordt gemaakt.
Inzicht in het effectief installeren van bibliotheken wordt essentieel naarmate uw data engineering-werkstromen in complexiteit toenemen. U moet weten welke installatiemethode moet worden gebruikt, waar bibliotheekbestanden moeten worden opgeslagen en hoe de toegangsmodi van invloed zijn op uw opties.
Inzicht in bibliotheken met een rekenkundige scope
Compute-scoped bibliotheken worden op een cluster geïnstalleerd en zijn beschikbaar voor alle notebooks en taken die op dat cluster worden uitgevoerd. In tegenstelling tot notebookbibliotheken die alleen voor een specifieke notebooksessie worden geïnstalleerd, blijven compute-scoped bibliotheken behouden tijdens het opnieuw opstarten van clusters en bieden ze een gedeelde omgeving voor alle gebruikers.
Wanneer u een bibliotheek op clusterniveau installeert, installeert Azure Databricks deze automatisch opnieuw telkens wanneer het cluster wordt gestart. Dit gedrag zorgt voor consistentie. U hoeft afhankelijkheden niet handmatig opnieuw te installeren nadat u een cluster hebt gestopt en opnieuw hebt opgestart. Alle notebooks die aan het cluster zijn gekoppeld, kunnen de geïnstalleerde pakketten onmiddellijk importeren en gebruiken.
Opmerking
Als u bibliotheken in een cluster wilt installeren, moet u de machtiging CAN MANAGE voor dat cluster hebben. Met deze machtiging kunt u de clusterconfiguratie wijzigen, inclusief het toevoegen en verwijderen van bibliotheken. Zonder deze machtiging hebt u geen toegang tot de bibliotheekinstallatie-interface.
Bibliotheken met rekenbereik ondersteunen Python-wielen, Java JAR-bestanden en R-pakketten. U kunt ze installeren vanuit pakketopslagplaatsen, zoals PyPI en Maven, of van bestanden die zijn opgeslagen in werkruimtebestanden, Unity Catalog-volumes of opslag van cloudobjecten. De installatiemethode die u kiest, is afhankelijk van het type bibliotheek, de clustertoegangsmodus en de beveiligingsvereisten van de organisatie.
Rekenbibliotheken hebben echter een belangrijke beperking: elke bibliotheek die u installeert, heeft invloed op elk notebook in het cluster. Als verschillende teams tegenstrijdige versies van dezelfde bibliotheek nodig hebben, moet u afzonderlijke clusters of notebookspecifieke installaties gebruiken om conflicten te voorkomen.
Bibliotheken installeren vanuit pakketopslagplaatsen
Pakketopslagplaatsen bieden de meest voorkomende manier om bibliotheken te installeren. PyPI host Python-pakketten, Maven host Java- en Scala-bibliotheken en CRAN host R-pakketten. Deze opslagplaatsen verwerken automatisch afhankelijkheidsresolutie en versiebeheer.
Als u een bibliotheek wilt installeren vanuit PyPI, selecteert u PyPI als bibliotheekbron en voert u de pakketnaam in. Geef voor productie-workloads een exacte versie op, zodat reproduceerbaarheid gegarandeerd is: pymssql==2.3.9 Zonder versienummer installeert Azure Databricks de meest recente beschikbare versie, die kan veranderen tussen installaties en mogelijk uw code onderbreekt.
Voor Maven-bibliotheken zijn coördinaten in de indeling groupId:artifactId:versionvereist. Als u bijvoorbeeld het Microsoft JDBC-stuurprogramma voor SQL Server-bibliotheek wilt installeren, gebruikt u com.microsoft.sqlserver:mssql-jdbc:13.2.1.jre11. U kunt rechtstreeks in het installatiedialoogvenster zoeken naar pakketten als u de exacte coördinaten niet weet. Maven biedt ook ondersteuning voor het uitsluiten van specifieke transitieve afhankelijkheden die mogelijk conflicteren met andere geïnstalleerde bibliotheken.
Geef voor R-pakketten van CRAN de pakketnaam op. In tegenstelling tot Python- en Java-bibliotheken halen CRAN-installaties altijd de nieuwste versie op uit de geconfigureerde mirror. Als u specifieke R-pakketversies wilt vastmaken, moet u de pakketbestanden opslaan in werkruimtebestanden of -volumes in plaats van te installeren vanuit CRAN.
Voor clusters die zijn geconfigureerd in de standaardtoegangsmodus, moeten allowlist Maven-coördinaten en JAR-bestandspaden vóór de installatie worden goedgekeurd. Deze beveiligingsmaatregel zorgt ervoor dat beheerders bibliotheken controleren en goedkeuren die worden uitgevoerd op gedeelde rekenresources.
Bibliotheken installeren vanuit bestanden
Als u bibliotheekbestanden opslaat in werkruimtebestanden of Unity Catalog-volumes , kunt u nauwkeurig bepalen welke bibliotheekversies uw clusters gebruiken. Deze aanpak werkt goed wanneer u bibliotheken nodig hebt die niet beschikbaar zijn in openbare opslagplaatsen, aangepaste pakketten die u intern hebt gemaakt of als specifieke versies niet meer beschikbaar zijn vanuit pakketopslagplaatsen.
Het gebruik van werkruimtebestanden en Unity Catalog-volumes voor bibliotheekinstallatie onderhoudt gecentraliseerd beheer in plaats van beveiligingsmaatregelen te omzeilen met ad-hocinstallaties, zoals directe pip3-opdrachten of onbeheerde aangepaste scripts die worden uitgevoerd vanuit notebooks. Unity Catalog-volumes bieden verbeterde governance via het toegangsbeheermodel van Unity Catalog, zodat alle bibliotheekinstallaties worden bijgehouden met auditlogboeken en worden beveiligd met verfijnde machtigingen.
Werkruimtebestanden bieden een handige locatie voor bibliotheekopslag met een maximale bestandsgrootte van 500 MB. Als u een bibliotheek wilt installeren vanuit bibliotheekbestanden in de werkruimte, uploadt u het wiel-, JAR- of requirements.txt-bestand via het importdialoogvenster van de werkruimte en verwijst u ernaar tijdens de installatie van de bibliotheek met behulp van een pad zoals /Workspace/Users/you@example.com/libraries/mypackage-1.0.0-py3-none-any.whl.
Unity Catalog-volumes bieden verbeterde beveiliging en governance voor bibliotheekopslag. U beheert de toegang via machtigingen voor Unity Catalog, zodat alleen geautoriseerde gebruikers bibliotheekbestanden kunnen lezen of wijzigen. Upload bestanden naar een volume via Catalog Explorer en installeer ze vervolgens met behulp van een pad zoals /Volumes/main/engineering/libraries/mypackage-1.0.0-py3-none-any.whl. De identiteit die voor de installatie wordt gebruikt, moet leesrechten op het volume hebben op het opgegeven volume.
Python requirements.txt-bestanden werken met zowel werkruimtebestanden als volumes in Databricks Runtime 15.0 en hoger. Met deze bestanden kunt u meerdere pakketafhankelijkheden in één bestand definiëren, zodat u eenvoudiger consistente omgevingen tussen clusters kunt onderhouden. Upload het requirements.txt-bestand en installeer het net als elke andere bibliotheek. Azure Databricks installeert automatisch alle vermelde pakketten.
Voor clusters met de standaardtoegangsmodus moet u bibliotheekbestandspaden toevoegen aan de allowlist voor de installatie. Dit is van toepassing op zowel werkruimtebestanden als volumes, zodat beheerders de bibliotheken goedkeuren die worden gebruikt op gedeelde rekenprocessen.
Init-scripts gebruiken voor geavanceerde configuratie
Init-scripts voeren shell-opdrachten uit tijdens het opstarten van het cluster, voordat het Spark-stuurprogramma en de uitvoerders worden gestart. Hoewel Databricks het gebruik van init-scripts voor bibliotheekinstallatie niet aanbeveelt , bieden clusterbibliotheken een betere benadering. Init-scripts zijn handig voor configuratie op systeemniveau die bibliotheken niet kunnen verwerken.
U kunt init-scripts gebruiken om systeempakketten te installeren met apt-get, omgevingsvariabelen te configureren of bewakingsagents in te stellen. Een init-script kan bijvoorbeeld een gespecialiseerd databasestuurprogramma installeren waarvoor systeembibliotheken zijn vereist en vervolgens verbindingsparameters configureren via omgevingsvariabelen. Het script wordt uitgevoerd telkens wanneer het cluster wordt gestart, zodat uw configuratie blijft bestaan tijdens het opnieuw opstarten.
Sla init-scripts op in Unity Catalog-volumes voor clusters met Databricks Runtime 13.3 LTS en hoger. Maak een shellscriptbestand, upload het naar een volume en configureer vervolgens het cluster om het script uit te voeren door het pad op te geven, zoals /Volumes/main/engineering/scripts/setup.sh. Voor de standaardtoegangsmodus voegt u het init-scriptpad toe aan allowlist voordat u het cluster configureert.
Init-scripts worden opeenvolgend uitgevoerd in de volgorde die u opgeeft. Als een script een afsluitcode zonder nul retourneert, kan het cluster niet worden gestart. Deze foutbeveiliging voorkomt dat clusters worden uitgevoerd met onvolledige of onjuiste configuratie. U kunt problemen met mislukte init-scripts oplossen door de levering van clusterlogboeken te configureren en de init-scriptlogboeken te controleren.
Overweeg init-scripts als laatste redmiddel voor configuratiebehoeften die door clusterbibliotheken en clusterbeleidsregels niet kunnen worden aangepakt. Het gebruik van clusterbeleid voor het instellen van omgevingsvariabelen en Spark-configuraties biedt vaak een eenvoudigere, beter onderhoudbare oplossing dan init-scripts.
Bibliotheken configureren voor de standaardtoegangsmodus
Clusters die zijn geconfigureerd met de standaardtoegangsmodus bieden de sterkste beveiliging en isolatie in Azure Databricks. Voor deze modus is expliciete goedkeuring vereist voor bibliotheken en init-scripts om te voorkomen dat niet-geautoriseerde code wordt uitgevoerd op gedeelde rekenresources.
Voordat u Maven-bibliotheken of JAR-bestanden installeert op clusters in de standaardtoegangsmodus, moet een metastore-beheerder deze toevoegen aan de allowlist. Maven-coördinaten worden geplaatst op het allowlist met het formaat groupId:artifactId:version. U kunt allowlist alle versies van een bibliotheek met groupId:artifactId, of alle artefacten in een groep met alleen groupId. Voor JAR-bestanden die zijn opgeslagen in volumes of objectopslag, allowlist het bestandspad of directorypad.
Init-scripts vereisen afzonderlijke allowlist vermeldingen, zelfs als ze zijn opgeslagen op dezelfde locatie als JAR-bestanden. Wanneer een padvermelding is toegestaan, gebruikt Azure Databricks voorvoegselmatching—het toevoegen van /Volumes/prod-libraries/ aan allowlist staat alle bestanden en submappen binnen die locatie toe. Voeg een sluitende schuine streep toe om onbedoelde voorvoegselovereenkomsten op directoryniveau te voorkomen.
De allowlist verleent alleen toestemming om een pad te gebruiken voor bibliotheek- of init-script-installatie. U hebt nog steeds de juiste machtigingen voor gegevenstoegang nodig. Voor volumes moet de installatie-id beschikken over READ VOLUME-machtigingen. Voor de standaardtoegangsmodus valideert de identiteit van de clustereigenaar deze machtigingen tijdens de installatie van de bibliotheek.
Om de allowlist metastore te configureren, gebruiken metastore-beheerders de Catalog Explorer, waarbij zij de metastore-instellingen selecteren en naar de sectie Toegestane JARs/Init-scripts navigeren. Dit gecentraliseerde beheer zorgt ervoor dat beveiligingsteams alle bibliotheken die in de rekenresources van de organisatie worden gebruikt, kunnen controleren en goedkeuren, waarbij governance wordt gehandhaafd zonder de productiviteit te blokkeren.
De juiste installatiemethode kiezen
Verschillende bibliotheekinstallatiemethoden passen bij verschillende scenario's. In het volgende diagram ziet u een beslissingsstroom om u te helpen de juiste installatiebenadering te selecteren: