Databricksクラスタの起動時にカスタムの初期化処理を実行したい場面は多くあります。 OSライブラリのインストール、セキュリティエージェントの配置、環境変数の設定、 モニタリングツールの起動など、Init Scriptsはクラスタ環境のカスタマイズに不可欠な仕組みです。 この記事では、Init Scriptsの種類、配置場所、実行順序、制約事項、トラブルシューティングまでを整理します。
Init Scriptsは適用範囲と設定方法によって以下の3種類に分けられます。
| 種類 | 適用範囲 | 設定方法 | ステータス |
|---|---|---|---|
| Cluster-scoped Init Script | 特定のクラスタのみ | クラスタ設定のAdvancedオプションで指定 | 推奨(現行標準) |
| Global Init Script | ワークスペース内の全クラスタ | Admin Settings → Global Init Scriptsで登録 | 推奨(管理者用) |
| Legacy Global Init Script(DBFS) | ワークスペース内の全クラスタ | DBFS上の特定パス(/databricks/init/)に配置 | 非推奨・段階廃止中 |
Cluster-scoped Init Scriptは特定のクラスタだけにカスタム環境を適用したいときに使い、 Global Init Scriptはセキュリティエージェントのように全クラスタで統一的に実行したい処理に使います。
| 配置場所 | パス例 | Unity Catalog管理 | 推奨度 |
|---|---|---|---|
| Unity Catalog Volumes | /Volumes/catalog/schema/volume/init.sh | 対応(権限・監査ログ統合) | 最も推奨 |
| Workspace Files | /Workspace/Shared/init-scripts/init.sh | Workspace ACLで管理 | 推奨 |
| DBFS(dbfs:/) | dbfs:/init-scripts/init.sh | 非対応 | 非推奨 |
| クラウドストレージ直接 | s3://bucket/init-scripts/init.sh | 非対応 | レガシー環境のみ |
Unity Catalog環境では、Volumesへの配置がベストプラクティスです。 Volumesに配置すると、スクリプトへのアクセスがUnity Catalogの権限モデルで管理され、 誰がいつスクリプトを変更したかの監査ログも取得できます。
クラスタ起動時に複数のInit Scriptが存在する場合、以下の順序で実行されます。
Global Init Scriptsが先に実行されるため、全クラスタ共通の基盤設定(セキュリティ、モニタリング)を Globalで行い、クラスタ固有のカスタマイズ(特定ライブラリのインストール等)をCluster-scopedで行う 設計が一般的です。
各スクリプト内では上から順にシェルコマンドが実行され、途中でexit 1等の非ゼロ終了コードが 返されるとクラスタの起動が失敗します。
#!/bin/bash
# 環境変数の設定
echo "export ENVIRONMENT=production" >> /etc/environment
# OS依存パッケージのインストール
apt-get update -y && apt-get install -y libgeos-dev
# Python追加ライブラリのインストール
/databricks/python/bin/pip install geopy==2.4.1
# モニタリングエージェントの起動
if [ -f /opt/monitoring/agent.sh ]; then
/opt/monitoring/agent.sh start
fiスクリプトは冪等(何回実行しても同じ結果)になるように書くことが重要です。 クラスタの再起動やリサイズのたびにInit Scriptが再実行されるため、 既にインストール済みのパッケージを再インストールしても問題ないようにします。
Shared Access Modeのクラスタ(複数ユーザーが共有するクラスタ)では、Init Scriptに重要な制約があります。
Single User Access Modeのクラスタでは、Cluster-scoped Init Scriptが利用可能です。 この違いは試験で問われやすいポイントです。
Init Scriptの実行結果はクラスタのドライバーノード上のログに保存されます。
| ログの場所 | 内容 | 確認方法 |
|---|---|---|
| クラスタUIのEvent Log | Init Script成功/失敗のサマリー | クラスタ詳細画面 → Event Log |
| ドライバーログ(/databricks/init_scripts/) | 各スクリプトの標準出力・標準エラー出力 | クラスタ詳細画面 → Driver Logs → Init Scripts |
| クラスタログ配信先 | S3/ADLS/GCS等に配信されたログ | クラスタ設定のLog Delivery設定先 |
Serverless Compute(SQL Warehouse Serverless / Serverless Notebooks)ではInit Scriptは実行できません。 Serverless環境はDatabricksが完全にマネージドするため、ユーザーによるOSレベルのカスタマイズは許可されません。
Serverless環境でライブラリを追加するには以下の方法を使います。
%pip installを使う%pip install /Volumes/...で参照するset -exを追加してデバッグ出力を有効にする-yフラグの付与を確認--timeoutや--retryオプションを追加if [ ! -f /opt/already_installed ]; then ...)で冪等性を確保Data Engineer Professional
問題 1
セキュリティチームが、ワークスペース内のすべてのクラスタにモニタリングエージェントを自動インストールしたい。クラスタはShared Access ModeとSingle User Access Modeの両方が存在する。最も適切な方法はどれか。
正解: B
Shared Access ModeのクラスタではCluster-scoped Init Scriptが利用できないため、Aは一部のクラスタで機能しません。Global Init Scriptはアクセスモードに関係なく全クラスタで実行されるため、統一的なエージェント配布に最適です。ノートブックでの手動実行はユーザー依存で確実性がなく、Cluster PolicyはInit Scriptの内容を制御する機能ではありません。
Init ScriptがServerless Computeで使えないのはなぜですか?
Serverless Computeはマネージド環境であり、ユーザーがOSレベルの操作を行うことを許可していません。Init Scriptはクラスタノードのシェルで実行されるため、Serverlessのセキュリティモデルと根本的に相容れません。Serverless環境でライブラリを追加するには%pip installまたはWorkspaceライブラリ機能を使用します。
Init Scriptが失敗したときクラスタはどうなりますか?
Init Scriptの失敗はクラスタの起動失敗を引き起こします。クラスタのイベントログに「INIT_SCRIPT_FAILURE」が記録され、ドライバーログのinit_scripts/配下に標準出力・標準エラー出力が保存されます。失敗を無視して起動を継続する設定はないため、スクリプトの冪等性と堅牢なエラーハンドリングが重要です。
DBFSにInit Scriptを配置するのは非推奨ですか?
はい。DBFS上のInit Script(Legacy Global Init Scripts含む)は段階的に非推奨になっています。Unity Catalog Volumesまたはワークスペースファイル(Workspace Files)への配置が推奨されます。Volumesに配置するとUnity Catalogの権限管理やバージョン管理の恩恵を受けられます。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Databricks資格一覧|全7試験・難易度・勉強法
Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...
Databricks試験の難易度ランキング|全7資格を徹底比較
Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...
Databricks資格の勉強方法|最短合格ルートと学習時間の目安
Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...
Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略
Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...
Databricks Data Engineer Professional完全解説|上級試験の攻略法
Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...