パイプラインは途切れず続けているため、Azure Databricksはパイプラインが完了するのを待ってから新しいランタイムバージョンやインフラ保守などのプラットフォームアップデートを適用することはできません。 これらのアップデートを適用するために、Azure Databricksはパイプラインを再起動します。 メンテナンスウィンドウでは、再起動のタイミングをコントロールできます。曜日、開始時間、タイムゾーンを選択すれば、Azure Databricksはそのウィンドウ内のみメンテナンスを開始します。
メンテナンスウィンドウはパイプラインを動かす連続ジョブの設定です。 設定しなければ、メンテナンスはいつでも実行可能です。
Azure Databricks がアップデートを適用する方法
継続的なパイプラインを更新するには、Azure Databricksが新しいクラスタで新しいパイプライン更新を開始し、前のクラスタをシャットダウンします。 連続的なパイプラインがストリーミングチェックポイントで進捗を追跡するため、新しいアップデートは前のアップデートの中断から再開されます。 交換中にデータ処理は一時停止しますが、その後データを失うことなく再開されます。
Azure Databricksは、選択した日の開始時刻から始まる1時間のウィンドウ内でメンテナンスを開始します。 再起動自体は通常短時間です。
仕事量に対して短い再開が許容される日と開始時間を選びましょう。
どのような更新プログラムが含まれていますか?
連続パイプラインの保守には以下が含まれます:
- Databricks ランタイムバージョンのアップグレード
- セキュリティ パッチと更新プログラム
- オペレーティング システムの更新プログラム
- LakeflowのSpark Declarative Pipelinesの機能と強化
- サーバーレスインフラの保守、例えば長期間稼働しているサーバーレスクラスターの定期的なリサイクルなど
ランタイムアップグレード(サービスアップグレード)もサーバーレスインフラのメンテナンスも、設定したメンテナンスウィンドウを尊重します。
Important
サーバーレスクラスターには最大寿命があります。 次のメンテナンスウィンドウより前にその制限に達した場合、Azure Databricksは現在の時間がウィンドウ外であっても制限内に収まるためにパイプラインを再起動します。 これにより、長期稼働するパイプラインが最終的にリサイクルされることが保証されます。
更新プログラムはどのくらいの頻度で適用されますか?
Azure Databricksはメンテナンスが必要な場合にのみアップデートを適用します。 新しいランタイムバージョンは定期的にリリースされ、サーバーレスインフラの保守は定期的に行われています。 個々のパイプラインの再起動頻度は以下の通りです:
- パイプラインに適用される新しい Databricks Runtime リリースの頻度
- サーバーレスパイプラインの場合、サーバーレスクラスタのリサイクルスケジュール
- メンテナンスウィンドウがどのくらいの頻度で訪れるか
メンテナンスウィンドウの時間になっても保留中の更新がない場合は、再起動は行われず、そのままウィンドウが終了します。
メンテナンスウィンドウの設定
Azure Databricks UIやJobs REST API、またはDeclarative Automation Bundlesでメンテナンスウィンドウを設定することができます。
メンテナンスウィンドウには3つの必要な要素があります:
| Setting | Description |
|---|---|
| 曜日 | 月曜から日曜までの一日だけ。 |
| スタート時間 | ウィンドウが始まる時間は、 0 から 23までの整数で、24時間後に始まります。 |
| タイム ゾーン |
America/New_Yorkのような、JavaタイムゾーンのIDです。 Azure Databricksはこのタイムゾーンのウィンドウを評価します。 |
Note
メンテナンスウィンドウは連続したジョブやパイプラインにのみ適用されます。 この設定はスケジュールや異なるトリガータイプで実行されるジョブには利用できません。
UIでメンテナンスウィンドウを設定する
メンテナンスウィンドウはジョブUIまたはパイプラインUIのいずれかから設定できます。
ジョブズUIより
- Azure Databricksワークスペースのサイドバーで、ワークフロー アイコンをクリックし、ジョブとパイプラインを選択します。
- 仕事名をクリックしてください。
- ジョブ詳細のパネルで「継続」トリガーを開き、「Advanced」を展開してメンテナンスウィンドウを探してください。
- 曜日、開始時間、タイムゾーンを選択してください。
- 保存 をクリックします。
パイプラインUIから
- Azure Databricksワークスペースのサイドバーで、ワークフロー アイコンをクリックし、ジョブとパイプラインを選択します。
- パイプラインの名前をクリックしてください。
- スケジュールを開き、「詳細設定」を展開してメンテナンスウィンドウを探してください。
- 曜日、開始時間、タイムゾーンを選択してください。
- 保存 をクリックします。
Jobs APIでメンテナンスウィンドウを設定しましょう
ジョブを作成または更新する際、Jobs REST APIでcontinuous設定内のmaintenance_windowフィールドを設定してください。 以下の例では、火曜日の東部標準時午前2時にメンテナンス開始を設定しています:
{
"continuous": {
"pause_status": "UNPAUSED",
"maintenance_window": {
"start_hour": 2,
"day_of_week": "TUESDAY",
"timezone_id": "America/New_York"
}
}
}
メンテナンスウィンドウを設定する際に、start_hour、 day_of_week、 timezone_idの3つのフィールドすべてが必須です。
start_hour
0から23までの整数でなければなりません。
宣言的自動化バンドルでメンテナンスウィンドウを設定する
maintenance_windowマッピングをジョブのcontinuousマッピング内に設定します。
maintenance_windowマッピングにはDatabricks CLIバージョン1.16.0以上が必要です。 古いバージョンで検証失敗させるには、 bundle.databricks_cli_version を '>= 1.16.0'に設定してください。 以下の例では、火曜日の東部標準時午前2時にメンテナンス開始を設定しています:
bundle:
name: continuous_pipeline_bundle
databricks_cli_version: '>= 1.16.0'
resources:
jobs:
continuous_pipeline_job:
name: continuous_pipeline_job
continuous:
pause_status: UNPAUSED
maintenance_window:
start_hour: 2
day_of_week: TUESDAY
timezone_id: America/New_York
tasks:
- task_key: refresh_pipeline
pipeline_task:
pipeline_id: ${resources.pipelines.example_pipeline.id}
メンテナンス通知の設定
Azure Databricksはメンテナンスの再起動開始と終了時に通知してくれます。 メンテナンス通知は標準のLakeflow Jobs通知システムを使用しているため、メールアドレスまたはSlack、PagerDuty、Microsoft Teamsなどのシステム宛先に配信できます。 「ジョブについての通知を追加する」をご覧ください。
連続作業で利用可能なイベントは2つあります:
- メンテナンス開始:メンテナンス再起動が始まったときに送信されます。 作業内容、原因(例えばサービスアップグレード)、開始時間が含まれます。
- メンテナンス完了:再起動完了後に送信。 原因、完了時間、再起動時間、再起動後のパイプラインの状態が含まれます。
サマータイム移行
Azure Databricksは設定したタイムゾーンのメンテナンスウィンドウを評価し、そのウィンドウはそのゾーンのサマータイム移行に合わせて設定されます。 ほとんどの日は、設定した現地時間からウィンドウが始まります。 当日の時計が変わると、スタート時間が最大1時間ずれることがあります。 運用スケジュールに合ったタイムゾーンを選択してください。
アップデート中の中断対応
メンテナンスの再起動はデータ処理を一時停止し、新しいアップデートが引き継ぎます。 ストリーミングソースは一時停止中もデータを蓄積し続け、新しい更新はパイプラインのチェックポイントから再開されるため、データが失われることはありません。
パイプラインに厳しいレイテンシ要件がある場合は、短い休止が許容される期間のメンテナンスウィンドウを選択してください。 再起動後にパイプラインが健康状態に戻ったかを確認するには、「 メンテナンス完了」 通知を監視してください。