Installieren von Bibliotheken für das Rechnen

Abgeschlossen

Wenn Sie Notizbücher und Aufträge auf Azure Databricks ausführen, benötigen Sie häufig Pakete von Drittanbietern oder benutzerdefinierten Code, der nicht in der Standardlaufzeit enthalten ist. Durch die Installation von Bibliothekenauf Clusterebene wird sichergestellt, dass jedes Notizbuch und jeder Auftrag, das die Berechnung verwendet, Zugriff auf dieselben Abhängigkeiten hat und eine konsistente Ausführungsumgebung erstellt.

Das Verständnis, wie Bibliotheken installiert werden, wird entscheidend, da Ihre Datentechnikworkflows komplexer werden. Sie müssen wissen, welche Installationsmethode verwendet werden soll, wo Bibliotheksdateien gespeichert werden sollen und wie sich die Zugriffsmodi auf Ihre Optionen auswirken.

Compute-scoped libraries verstehen

Compute-scoped libraries werden auf einem Cluster installiert und stehen allen Notebooks und Aufträgen zur Verfügung, die auf diesem Cluster laufen. Im Gegensatz zu Notizbuch-spezifischen Bibliotheken, die nur für eine bestimmte Notizbuchsitzung installiert werden, bleiben rechnerbezogene Bibliotheken über Clusterneustarts hinweg erhalten und bieten eine gemeinsame Umgebung für alle Benutzer.

Wenn Sie eine Bibliothek auf Clusterebene installieren, installiert Azure Databricks diese bei jedem Start des Clusters automatisch neu. Dieses Verhalten sorgt für Konsistenz – Sie müssen Abhängigkeiten nicht manuell neu installieren, nachdem Sie einen Cluster beendet und neu gestartet haben. Alle mit dem Cluster verbundenen Notebooks können die installierten Pakete sofort importieren und verwenden.

Hinweis

Um Bibliotheken auf einem Cluster zu installieren, müssen Sie über die BERECHTIGUNG CAN MANAGE für diesen Cluster verfügen. Mit dieser Berechtigung können Sie die Clusterkonfiguration ändern, einschließlich hinzufügen und entfernen von Bibliotheken. Ohne diese Berechtigung können Sie nicht auf die Bibliotheksinstallationsschnittstelle zugreifen.

Compute-spezifische Bibliotheken unterstützen Python Wheels, Java JAR-Dateien und R-Pakete. Sie können sie aus Paketrepositorys wie PyPI und Maven oder aus Dateien installieren, die in Arbeitsbereichsdateien, Unity-Katalogvolumes oder Cloudobjektspeicher gespeichert sind. Die gewählte Installationsmethode hängt vom Bibliothekstyp, dem Clusterzugriffsmodus und den Sicherheitsanforderungen der Organisation ab.

Allerdings haben Compute-scoped libraries eine wichtige Einschränkung: Jede Bibliothek, die Sie installieren, wirkt sich auf alle Notebooks im Cluster aus. Wenn unterschiedliche Teams widersprüchliche Versionen derselben Bibliothek benötigen, benötigen Sie separate Cluster oder Notizbuch-bezogene Installationen, um Konflikte zu vermeiden.

Installieren von Bibliotheken aus Paketrepositorys

Paketrepositorys bieten die am häufigsten verwendete Möglichkeit zum Installieren von Bibliotheken. PyPI hostt Python-Pakete, Maven hosten Java- und Scala-Bibliotheken, und CRAN hosten R-Pakete. Diese Repositorys behandeln die Abhängigkeitsauflösung und versionsverwaltung automatisch.

Um eine Bibliothek aus PyPI zu installieren, wählen Sie PyPI als Bibliotheksquelle aus, und geben Sie den Paketnamen ein. Geben Sie für Produktionsworkloads eine genaue Version an, um die Reproduzierbarkeit sicherzustellen: pymssql==2.3.9. Ohne Versionsnummer installiert Azure Databricks die neueste verfügbare Version, die sich möglicherweise zwischen Installationen ändert und ihren Code möglicherweise unterbricht.

Screenshot des Dialogfelds

Maven-Bibliotheken erfordern Koordinaten im Format groupId:artifactId:version. Um beispielsweise den Microsoft JDBC-Treiber für die SQL Server-Bibliothek zu installieren, würden Sie com.microsoft.sqlserver:mssql-jdbc:13.2.1.jre11 verwenden. Sie können direkt im Installationsdialogfeld nach Paketen suchen, wenn Sie die genauen Koordinaten nicht kennen. Maven unterstützt auch das Ausschließen bestimmter transitiver Abhängigkeiten, die möglicherweise mit anderen installierten Bibliotheken in Konflikt stehen.

Screenshot des Dialogfelds

Geben Sie für R-Pakete von CRAN den Paketnamen an. Im Gegensatz zu Python- und Java-Bibliotheken rufen CRAN-Installationen immer die neueste Version aus der konfigurierten Spiegelung ab. Um bestimmte R-Paketversionen festzulegen, müssen Sie die Paketdateien in Workspace-Dateien oder Volumes speichern, anstatt sie von CRAN zu installieren.

Bei Clustern, die im Standardzugriffsmodus konfiguriert sind, erfordern allowlist Maven-Koordinaten und JAR-Dateipfade vor der Installation eine Genehmigung. Diese Sicherheitsmaßnahme stellt sicher, dass Administratoren Bibliotheken überprüfen und genehmigen, die auf freigegebenen Computeressourcen ausgeführt werden.

Hinweis

Weitere Informationen zum Konfigurieren und Verwalten allowlists von Bibliotheken finden Sie in der Dokumentation.

Installieren von Bibliotheken aus Dateien

Durch das Speichern von Bibliotheksdateien in Arbeitsbereichsdateien oder Unity Catalog-Volumes können Sie genau steuern, welche Bibliotheksversionen Ihre Cluster verwenden. Dieser Ansatz eignet sich gut, wenn Sie Bibliotheken benötigen, die nicht in öffentlichen Repositorys verfügbar sind, benutzerdefinierte Pakete, die Sie intern erstellt haben, oder bestimmte Versionen, die nicht mehr in Paketrepositorys verfügbar sind.

Die Verwendung von Workspace-Dateien und Unity Catalog-Volumes für die Bibliotheksinstallation gewährleistet eine zentrale Verwaltung, anstatt Sicherheitskontrollen durch Ad-hoc-Installationen wie direkte pip3-Befehle oder nicht verwaltete benutzerdefinierte Skripte, die aus Notebooks ausgeführt werden, zu umgehen. Unity Catalog-Volumes bieten eine verbesserte Governance durch das Zugriffskontrollmodell von Unity Catalog und gewährleisten so, dass alle Bibliotheksinstallationen mit Audit-Logs nachverfolgt und durch fein abgestufte Berechtigungen geschützt werden.

Arbeitsbereichsdateien bieten einen praktischen Ort zur Speicherung von Bibliotheken mit einer Begrenzung der Dateigröße auf 500 MB. Um eine Bibliothek aus Arbeitsbereichsdateien zu installieren, laden Sie Ihr wheel, JAR oder requirements.txt Datei über das Dialogfeld "Arbeitsbereich Importieren" hoch, und verweisen Sie dann darauf während der Bibliotheksinstallation mit einem Pfad wie /Workspace/Users/you@example.com/libraries/mypackage-1.0.0-py3-none-any.whl.

Screenshot, der zeigt, wo das Dialogfeld

Unity-Katalogvolumes bieten eine verbesserte Sicherheit und Governance für den Bibliotheksspeicher. Sie steuern den Zugriff über Unity-Katalogberechtigungen, um sicherzustellen, dass nur autorisierte Benutzer Bibliotheksdateien lesen oder ändern können. Laden Sie Dateien über den Katalog-Explorer auf ein Volume hoch, und installieren Sie sie dann mit einem Pfad wie /Volumes/main/engineering/libraries/mypackage-1.0.0-py3-none-any.whl. Die für die Installation verwendete Identität muss über die Berechtigung READ VOLUME auf dem angegebenen Volume verfügen.

Screenshot einer Bibliothek, die auf ein Volume im Unity-Katalog hochgeladen wurde.

Python requirements.txt Dateien funktionieren sowohl mit Workspace-Dateien als auch mit Volumes in Databricks Runtime 15.0 und höher. Mit diesen Dateien können Sie mehrere Paketabhängigkeiten in einer einzelnen Datei definieren, sodass einheitliche Umgebungen in allen Clustern einfacher verwaltet werden können. Laden Sie die requirements.txt Datei hoch, und installieren Sie sie wie jede andere Bibliothek– Azure Databricks installiert automatisch alle aufgelisteten Pakete.

Bei Clustern mit Standardzugriffsmodus müssen Sie vor der Installation die Bibliotheksdateipfade zur allowlist hinzufügen. Dies gilt sowohl für Arbeitsbereichsdateien als auch für Volumes, um sicherzustellen, dass Administratoren die bibliotheken genehmigen, die für die gemeinsame Berechnung verwendet werden.

Verwenden von Init-Skripts für erweiterte Konfiguration

Init-Skripts führen Shellbefehle während des Clusterstarts aus, bevor der Spark-Treiber und die Executoren gestartet werden. Während Databricks die Verwendung von Init-Skripts für die Bibliotheksinstallation nicht empfiehlt – Cluster-bezogene Bibliotheken bieten einen besseren Ansatz – init-Skripts sind für die Konfiguration auf Systemebene nützlich, die Bibliotheken nicht verarbeiten können.

Sie können init-Skripts zum Installieren von Systempaketen mit apt-get, zum Konfigurieren von Umgebungsvariablen oder zum Einrichten von Überwachungs-Agents verwenden. Ein Init-Skript kann z. B. einen speziellen Datenbanktreiber installieren, der Systembibliotheken erfordert, und dann Verbindungsparameter über Umgebungsvariablen konfigurieren. Das Skript wird jedes Mal ausgeführt, wenn der Cluster gestartet wird, um sicherzustellen, dass die Konfiguration über Neustarts hinweg beibehalten wird.

Speichern Sie init-Skripts in Unity-Katalogvolumes für Cluster mit Databricks Runtime 13.3 LTS und höher. Erstellen Sie eine Shell-Skriptdatei, laden Sie sie in ein Volume hoch, und konfigurieren Sie dann den Cluster, damit das Skript ausgeführt wird, indem Sie den Pfad wie /Volumes/main/engineering/scripts/setup.sh folgt angeben. Fügen Sie für den Standardzugriffsmodus den Init-Skriptpfad zum allowlist hinzu, bevor Sie den Cluster konfigurieren.

Init-Skripts werden sequenziell in der von Ihnen angegebenen Reihenfolge ausgeführt. Wenn ein Skript einen Nicht-Null-Ausgangscode zurückgibt, kann der Cluster nicht gestartet werden. Dieser Fehlerschutz verhindert, dass Cluster mit unvollständiger oder falscher Konfiguration ausgeführt werden. Sie können Fehler bei init-Skripts beheben, indem Sie die Bereitstellung von Clusterprotokollen konfigurieren und die Init-Skriptprotokolle untersuchen.

Betrachten Sie Init-Skripts als letztes Mittel für Konfigurationsanforderungen, die von cluster-weiten Bibliotheken und Clusterrichtlinien nicht adressiert werden können. Die Verwendung von Clusterrichtlinien zum Festlegen von Umgebungsvariablen und Spark-Konfigurationen bietet häufig eine einfachere, wartungsfähigere Lösung als init-Skripts.

Konfigurieren von Bibliotheken für den Standardzugriffsmodus

Cluster, die mit dem Standardzugriffsmodus konfiguriert sind, bieten die stärkste Sicherheit und Isolation in Azure Databricks. Dieser Modus erfordert explizite Genehmigung für Bibliotheken und Init-Skripts, um die nicht autorisierte Codeausführung für freigegebene Computeressourcen zu verhindern.

Vor der Installation von Maven-Bibliotheken oder JAR-Dateien auf Standardzugriffsmodusclustern muss ein Metastore-Administrator sie der allowlistDatei hinzufügen. Maven-Koordinaten haben in der allowlist das Format groupId:artifactId:version. Auf der allowlist sind alle Versionen einer Bibliothek mit groupId:artifactId oder alle Artefakte in einer Gruppe nur mit groupId möglich. Für JAR-Dateien, die in Volumes oder Objektspeichern gespeichert sind, setzen Sie den Dateipfad oder den Verzeichnispfad auf die allowlist.

Init-Skripts erfordern separate allowlist Einträge, auch wenn sie an demselben Speicherort wie JAR-Dateien gespeichert sind. Wenn ein Pfad auf die Positivliste gesetzt wird, verwendet Azure Databricks Präfixabgleich – durch Hinzufügen von /Volumes/prod-libraries/ zu allowlist werden alle Dateien und Unterverzeichnisse innerhalb dieses Speicherorts zugelassen. Fügen Sie einen abschließenden Schrägstrich ein, um unbeabsichtigte Präfixübereinstimmungen auf Verzeichnisebene zu verhindern.

Die allowlist berechtigt nur zur Verwendung eines Pfads für die Installation einer Bibliothek oder eines Init-Skripts. Sie benötigen weiterhin geeignete Datenzugriffsberechtigungen. Für Volumes muss die Identität des Installateurs die Berechtigung READ VOLUME haben. Im Standardzugriffsmodus überprüft die Identität des Clusterbesitzers diese Berechtigungen während der Bibliotheksinstallation.

Um allowlist zu konfigurieren, verwenden Metastore-Administratoren den Katalog-Explorer, wählen die Metastore-Einstellungen aus und navigieren zum Abschnitt "Zulässige JARs/Init-Skripts". Mit dieser zentralen Kontrolle wird sichergestellt, dass Sicherheitsteams alle Bibliotheken überprüfen und genehmigen können, die in den Computeressourcen der Organisation verwendet werden, ohne die Produktivität zu blockieren.

Screenshot des Dialogfelds

Auswählen der richtigen Installationsmethode

Verschiedene Methoden der Bibliotheksinstallation eignen sich für unterschiedliche Szenarien. Das folgende Diagramm veranschaulicht einen Entscheidungsfluss, der Ihnen bei der Auswahl des geeigneten Installationsansatzes hilft:

Diagramm mit den verschiedenen Methoden der Bibliotheksinstallation.