Verwenden clusterbezogener Initskripts
Clusterspezifische Initialisierungsskripts werden in einer Clusterkonfiguration definiert. Sie gelten sowohl für Cluster, die Sie erstellt haben, als auch für Cluster zum Ausführen von Aufträgen.
Die Konfiguration der clusterspezifischen Initialisierungsskripts kann über die Benutzeroberfläche, die CLI und durch Aufrufen der Cluster-API erfolgen. In diesem Abschnitt liegt der Schwerpunkt auf der Ausführung dieser Aufgaben über die Benutzeroberfläche. Informationen zu den anderen Methoden finden Sie unter Databricks-CLI und Cluster-API.
Sie können beliebig viele Skripts hinzufügen. Diese werden nacheinander in der angegebenen Reihenfolge ausgeführt.
Gibt ein clusterspezifisches Initialisierungsskript einen Exitcode ungleich 0 (null) zurück, tritt beim Clusterstart ein Fehler auf. Konfigurieren Sie zur Behebung von Problemen mit clusterbezogenen Initskripts die Übermittlung von Clusterprotokollen und überprüfen Sie das Initskript-Protokoll. Weitere Informationen finden Sie unter Initskript-Protokolle
Konfigurieren eines clusterspezifischen Initialisierungsskripts mithilfe der Benutzeroberfläche
Dieser Abschnitt enthält Anweisungen, um mithilfe der Azure Databricks-Benutzeroberfläche einen Cluster für die Ausführung eines Initialisierungsskripts zu konfigurieren.
Databricks empfiehlt, alle Initialisierungsskripts als clusterspezifische Initialisierungsskripts zu verwalten. Wenn Sie Compute mit freigegebenem Zugriffsmodus oder Einzelbenutzer-Zugriffsmodus verwenden, speichern Sie Initialisierungsskripts in Unity Catalog-Volumes. Wenn Sie Compute mit dem freigegebenen Modus ohne Isolation verwenden, nutzen Sie Arbeitsbereichsdateien für Initialisierungsskripts.
Für den freigegebenen Zugriffsmodus müssen Sie Initskripts zu allowlist
hinzufügen. Weitere Informationen finden Sie unter Positivliste von Bibliotheken und Initialisierungsskripts auf freigegebenem Compute.
Führen Sie die folgenden Schritte aus, um mithilfe der Benutzeroberfläche einen Cluster für die Ausführung eines Initialisierungsskripts zu konfigurieren:
- Klicken Sie auf der Seite „Clusterkonfiguration“ auf die Umschaltfläche Erweiterte Optionen.
- Klicken Sie unten auf der Seite auf die Registerkarte Initialisierungsskripts.
- Wählen Sie in der Dropdownliste Quelle den Quelltyp Arbeitsbereich, Volume oder ABFSS aus.
- Geben Sie einen Pfad zum Initskript an, wie in einem der folgenden Beispiele:
- Für ein Initskript, das in Ihrem Startverzeichnis mit Arbeitsbereichsdateien gespeichert ist:
/Users/<user-name>/<script-name>.sh
. - Für ein mit Unity Catalog-Volumes gespeichertes Initskript:
/Volumes/<catalog>/<schema>/<volume>/<path-to-script>/<script-name>.sh
. - Für ein mit Objektspeicher gespeichertes Initskript:
abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/init-script
.
- Für ein Initskript, das in Ihrem Startverzeichnis mit Arbeitsbereichsdateien gespeichert ist:
- Klicken Sie auf Hinzufügen.
Im Modus für den Einzelbenutzerzugriff wird die Identität des zugewiesenen Prinzipals (ein Benutzer oder Dienstprinzipal) verwendet.
Im freigegebenen Zugriffsmodus wird die Identität des Clusterbesitzers verwendet.
Hinweis
Der freigegebene Zugriffsmodus ohne Isolation unterstützt keine Volumes, verwendet jedoch die gleiche Identitätszuweisung wie der freigegebene Zugriffsmodus.
Wenn Sie ein Skript aus der Clusterkonfiguration entfernen möchten, klicken Sie rechts neben dem Skript auf das Papierkorb-Symbol. Nach Bestätigen des Löschvorgangs werden Sie aufgefordert, den Cluster neu zu starten. Optional können Sie die Skriptdatei aus dem Speicherort löschen, an den Sie sie hochgeladen haben.
Hinweis
Wenn Sie ein Initskript mithilfe des ABFSS-Quelltyps konfigurieren, müssen Sie die Zugriffsanmeldeinformationen konfigurieren.
Databricks empfiehlt die Verwendung von Microsoft Entra ID-Dienstprinzipalen zum Verwalten des Zugriffs auf Initialisierungsskripts, die in Azure Data Lake Storage Gen2 gespeichert sind. Verwenden Sie die nachfolgend verlinkte Dokumentation, um dieses Setup abzuschließen:
Erstellen Sie ein Dienstprinzipal mit Berechtigungen zum Lesen und Auflisten der gewünschten Blobs. Weitere Informationen finden Sie unter Zugriff auf Speicher mit Microsoft Entra ID (früher Azure Active Directory) und einem Dienstprinzipal.
Speichern Sie Ihre Anmeldeinformationen mithilfe von Geheimnissen. Weitere Informationen hierzu finden Sie unter Geheimnisse.
Legen Sie die Eigenschaften in der Spark-Konfiguration und die Umgebungsvariablen beim Erstellen eines Clusters fest, wie im folgenden Beispiel gezeigt:
Spark-Konfiguration:
spark.hadoop.fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net OAuth spark.hadoop.fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider spark.hadoop.fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net <application-id> spark.hadoop.fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net {{secrets/<secret-scope>/<service-credential-key>}} spark.hadoop.fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net https://login.microsoftonline.com/<tenant-id>/oauth2/token
Umgebungsvariablen:
SERVICE_CREDENTIAL={{secrets/<secret-scope>/<service-credential-key>}}
(Optional) Gestalten Sie die Initialisierungsskripts mithilfe von azcopy oder der Azure CLI um.
Sie können auf die während der Clusterkonfiguration festgelegten Umgebungsvariablen in Ihren Initialisierungsskripts verweisen, um als Geheimnis gespeicherte Anmeldeinformationen zur Validierung zu übergeben.
Warnung
Clusterspezifische Initialisierungsskripts in DBFS werden nicht mehr unterstützt. Die Option DBFS in der Benutzeroberfläche einiger Arbeitsbereiche dient der Unterstützung von Legacy-Workloads und wird nicht empfohlen. Alle in DBFS gespeicherten Initialisierungsskripts sollten migriert werden. Anweisungen zur Migration finden Sie unter Migrieren von Initialisierungsskripts aus DBFS.
Problembehandlung für clusterbezogene Initskripts
- Das Skript muss am konfigurierten Speicherort vorhanden sein. Wenn das Skript nicht vorhanden ist, führen Versuche, den Cluster zu starten oder die Executors hochzuskalieren, zu einem Fehler.
- Das Initialisierungsskript darf nicht größer als 64 KB sein. Überschreitet das Skript diese Größe, kann der Cluster nicht gestartet werden, und im Clusterprotokoll wird eine Fehlermeldung angezeigt.