クラスター スコープの init スクリプトを使用する

クラスター スコープの init スクリプトは、クラスター構成で定義されている init スクリプトです。 クラスター スコープの init スクリプトは、作成するクラスターとジョブを実行するために作成されたクラスターの両方に適用されます。

クラスター スコープの init スクリプトは、UI、CLI、および Clusters API を呼び出して構成できます。 ここでは、UI を使用してプール タスクを実行する方法について説明します。 その他の方法については、Databricks CLIClusters API に関するページを参照してください。

任意の数のスクリプトを追加できます。スクリプトは指定された順序で順番に実行されます。

クラスター スコープの init スクリプトが 0 以外の終了コードを返した場合、クラスターの起動は失敗します。 クラスター のログ配信を構成し、init スクリプト ログを調べることで、クラスター スコープの init スクリプトのトラブルシューティングを行います。 「Init スクリプトのログ」を参照してください。

UI を使用してクラスター スコープの init スクリプトを構成する

このセクションでは、Azure Databricks UI を使用して init スクリプトを実行するようにクラスターを構成する手順について説明します。

Databricks では、クラスター スコープの init スクリプトとして、すべての init スクリプトを管理することが推奨されています。 共有またはシングル ユーザー アクセス モードでコンピューティングを使用している場合は、Unity Catalog ボリュームに init スクリプトを格納します。 分離なしの共有アクセス モードでコンピューティングを使用している場合は、init スクリプトにワークスペース ファイルを使用します。

共有アクセス モードの場合、allowlist に init スクリプトを追加する必要があります。 「共有コンピューティングの許可リスト ライブラリと init スクリプト」を参照してください。

UI を使用して init スクリプトを実行するようにクラスターを構成するには、次の手順を実行します。

  1. クラスター構成ページで、[詳細オプション] トグルをクリックします。
  2. ページの下部にある [Init Scripts] (Init スクリプト) タブをクリックします。
  3. [ソース] ドロップダウンで、[ワークスペース][ボリューム]、または [ABFSS] ソースのタイプを選択します。
  4. 次のいずれかの例のように、init スクリプトへのパスを指定します。
    • ワークスペース ファイルと共にホーム ディレクトリに格納されている init スクリプトの場合: /Users/<user-name>/<script-name>.sh
    • Unity Catalog ボリュームと共に格納されている 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
  5. 追加をクリックします。

シングル ユーザー アクセス モードでは、割り当てられたプリンシパル (ユーザーまたはサービス プリンシパル) の ID が使用されます。

共有アクセス モードでは、クラスター所有者の ID が使用されます。

Note

分離なし共有アクセス モードではボリュームがサポートされませんが、共有アクセス モードと同じ ID 割り当てが使用されます。

クラスター構成からスクリプトを削除するには、スクリプトの右側にあるごみ箱アイコンをクリックします。 削除を確定すると、クラスターの再起動を求めるメッセージが表示されます。 必要に応じて、アップロードした場所からスクリプト ファイルを削除できます。

Note

ABFSS ソース タイプを使用して init スクリプトを構成する場合は、アクセス資格情報を構成する必要があります。

Databricks は、Microsoft Entra ID サービス プリンシパルを使用して、Azure Data Lake Storage Gen2 に保存されている init スクリプトへのアクセスを管理することをお勧めしています。 次のリンクされたドキュメントを使用して、このセットアップを完了してください。

  1. 目的の BLOB に対する読み取りと一覧表示の権限を持つサービス プリンシパルを作成します。 「サービス プリンシパルと Microsoft Entra ID (Azure Active Directory) を使用してストレージにアクセスする」をご覧ください。

  2. シークレットを使用して資格情報を保存します。 「シークレット」を参照してください。

  3. 次の例のように、クラスターの作成時に 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>}}
    
  4. (省略可能) azcopy または Azure CLI を使用して、init スクリプトをリファクタリングします。

    init スクリプト内でクラスター構成中に設定された環境変数を参照して、検証用のシークレットとして格納された資格情報を渡すことができます。

警告

DBFS のクラスター スコープの init スクリプトはサポートが終了しました。 一部のワークスペースでは、レガシ ワークロードをサポートするために UI に DBFS オプションが存在していますが、これは推奨されません。 DBFS に格納されているすべての init スクリプトを移行する必要があります。 移行手順については、「DBFS から init スクリプトを移行する」を参照してください。

クラスター スコープの init スクリプトのトラブルシューティング

  • スクリプトは、構成された場所に存在する必要があります。 スクリプトが存在しない場合は、クラスターの起動や Executor のスケールアップを試みると、失敗します。
  • init スクリプトは 64 KB より大きくすることはできません。 スクリプトがこのサイズを超えると、クラスターの起動に失敗し、クラスター ログにエラー メッセージが表示されます。