クラスター スコープの init スクリプトは、クラスター構成で定義されている init スクリプトです。 クラスター スコープの init スクリプトは、作成するクラスターとジョブを実行するために作成されたクラスターの両方に適用されます。
クラスター スコープの init スクリプトは、UI、CLI、および Clusters API を呼び出して構成できます。 ここでは、UI を使用してプール タスクを実行する方法について説明します。 その他の方法については、Databricks CLI と Clusters API に関するページを参照してください。
任意の数のスクリプトを追加できます。スクリプトは指定された順序で順番に実行されます。
クラスター スコープの init スクリプトが 0 以外の終了コードを返した場合、クラスターの起動は失敗します。 クラスター のログ配信を構成し、init スクリプト ログを調べることで、クラスター スコープの init スクリプトのトラブルシューティングを行います。 「Init スクリプトのログ」を参照してください。
UI を使用してクラスター スコープの init スクリプトを構成する
このセクションでは、Azure Databricks UI を使用して init スクリプトを実行するようにクラスターを構成する手順について説明します。
Databricks では、クラスター スコープの init スクリプトとして、すべての init スクリプトを管理することが推奨されています。 標準アクセス モードまたは専用アクセス モード (以前の共有およびシングル ユーザー アクセス モード) でコンピューティングを使用している場合は、unity カタログ ボリュームに init スクリプトを格納します。 分離なしの共有アクセス モードでコンピューティングを使用している場合は、init スクリプトにワークスペース ファイルを使用します。
標準アクセス モードの場合は、 allowlist
に init スクリプトを追加する必要があります。
標準アクセス モード (以前の共有アクセス モード) を使用したコンピューティングでの許可リスト ライブラリと init スクリプトを参照してください。
UI を使用して init スクリプトを実行するようにクラスターを構成するには、次の手順を実行します。
- クラスター構成ページで、[ 詳細設定 ] トグルをクリックします。
- ページの下部にある [Init Scripts] (Init スクリプト) タブをクリックします。
- [ソース] ドロップダウンで、[ワークスペース]、[ボリューム]、または [ABFSS] ソースのタイプを選択します。
- 次のいずれかの例のように、init スクリプトへのパスを指定します。
- ワークスペース ファイルに格納されている init スクリプトの場合:
/Workspace/<path-to-script>/<script-name>.sh
- Unity カタログ ボリュームと共に格納されている init スクリプトの場合:
/Volumes/<catalog>/<schema>/<volume>/<path-to-script>/<script-name>.sh
- オブジェクト ストレージと共に格納されている init スクリプトの場合:
abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/init-script
- ワークスペース ファイルに格納されている init スクリプトの場合:
- 追加をクリックします。
専用アクセス モードでは、割り当てられたプリンシパル (ユーザーまたはサービス プリンシパル) の ID が使用されます。
標準アクセス モードでは、クラスター所有者の ID が使用されます。
注
分離なし共有アクセス モードはボリュームをサポートしませんが、標準アクセス モードと同じ ID 割り当てを使用します。
クラスター構成からスクリプトを削除するには、スクリプトの右側にあるごみ箱アイコンをクリックします。 削除を確定すると、クラスターの再起動を求めるメッセージが表示されます。 必要に応じて、アップロードした場所からスクリプト ファイルを削除できます。
注
ABFSS ソース タイプを使用して init スクリプトを構成する場合は、アクセス資格情報を構成する必要があります。
Databricks では、Microsoft Entra ID サービス プリンシパルを使用して、Azure Data Lake Storage に格納されている init スクリプトへのアクセスを管理することをお勧めします。 次のリンクされたドキュメントを使用して、このセットアップを完了してください。
目的の BLOB に対する読み取りと一覧表示の権限を持つサービス プリンシパルを作成します。 「サービス プリンシパルと Microsoft Entra ID (Azure Active Directory) を使用してストレージにアクセスする」をご覧ください。
シークレットを使用して資格情報を保存します。 管理シークレットを参照してください。
次の例のように、クラスターの作成時に Spark 構成と環境変数のプロパティを設定します。
Spark 構成:
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
環境変数:
SERVICE_CREDENTIAL={{secrets/<secret-scope>/<service-credential-key>}}
(省略可能) azcopy または Azure CLI を使用して、init スクリプトをリファクタリングします。
init スクリプト内でクラスター構成中に設定された環境変数を参照して、検証用のシークレットとして格納された資格情報を渡すことができます。
警告
DBFS のクラスター スコープの init スクリプトはサポートが終了しました。 一部のワークスペースでは、レガシ ワークロードをサポートするために UI に DBFS オプションが存在していますが、これは推奨されません。 DBFS に格納されているすべての init スクリプトを移行する必要があります。 移行手順については、「DBFS から init スクリプトを移行する」を参照してください。
クラスター スコープの init スクリプトのトラブルシューティング
- スクリプトは、構成された場所に存在する必要があります。 スクリプトが存在しない場合は、クラスターの起動または Executor のスケールアップを試みると、エラーが発生します。
- init スクリプトは 64 KB より大きくすることはできません。 スクリプトがこのサイズを超えると、クラスターの起動に失敗し、クラスター ログにエラー メッセージが表示されます。