Databricksのクラスタオートスケーリングは、ワークロードの負荷に応じてワーカーノード数を自動的に増減させる機能です。 適切に設定すれば、ピーク時の処理性能を確保しつつ、アイドル時のコストを抑えることができます。
ただし、「Autoscalingを有効にすればコスト最適化」は半分正解で半分間違いです。 min/max workersの設定ミス、スケールダウンのラグ、ストリーミングジョブとの相性など、 理解すべきトレードオフがあります。この記事ではAutoscalingの仕組みと設計判断を詳しく解説します。
DatabricksのAutoscalingは、SparkのDynamic Resource Allocationをベースに、 Databricks独自の最適化を加えた仕組みです。 クラスタ作成時にmin_workers(最小ワーカー数)とmax_workers(最大ワーカー数)を指定すると、 以下のロジックでワーカー数が自動調整されます。
| パラメータ | 説明 | 推奨値の目安 |
|---|---|---|
| min_workers | 最小ワーカー数。負荷がなくてもこの台数は維持される | 1〜2(コスト重視)/ 予想最低負荷に合わせる |
| max_workers | 最大ワーカー数。ピーク負荷でもこの台数を超えない | Cluster Policyで上限を制約するのが実務上の定石 |
| autoscale.target_workers | Databricks内部で計算されるスケーリング目標値 | ユーザーが直接設定する項目ではない |
| spark.databricks.autoscaling.enabled | Optimized Autoscalingの有効/無効 | 有効推奨 |
| autotermination_minutes | クラスタ全体のアイドル自動終了時間 | 10〜30分(Policyで最小値を強制) |
| spot_bid_max_price | Spotインスタンスの最大入札価格(AWS) | -1(オンデマンド価格まで許容)が一般的 |
Databricksは標準のSpark Autoscalingに加えて、Optimized Autoscaling(一部ドキュメントではEnhanced Autoscaling) を提供しています。これはDatabricks独自のスケーリングアルゴリズムで、 標準版と比較して以下の改善があります。
| 比較項目 | 標準Autoscaling | Optimized Autoscaling |
|---|---|---|
| スケールアップ速度 | pending tasksベースで反応 | 負荷予測に基づき先行スケールアップ |
| スケールダウン速度 | 保守的(クールダウン長め) | 高速(不要ノードを早期解放) |
| Shuffleデータの考慮 | Shuffleデータを保持するノードは解放しない | Shuffleデータの再計算コストを考慮して最適判断 |
| 追加料金 | なし | なし |
| 対応ワークロード | 全般 | バッチ処理に特に効果的 |
Optimized Autoscalingはデフォルトで有効になっている場合が多いですが、 クラスタ設定で明示的に確認・有効化することを推奨します。
Autoscalingの動作を確認するためのUIとログは以下の通りです。
実務では、スケールアップが頻繁すぎる場合はmin_workersを引き上げ、 スケールダウンが遅すぎる場合はOptimized Autoscalingの有効化を検討します。
Autoscalingを使ったコスト最適化のパターンを整理します。
| パターン | 設定 | 効果 | 注意点 |
|---|---|---|---|
| 最小構成スタート | min_workers=1, max_workers=8 | 低負荷時に1ノードでコスト最小化 | スケールアップ時に起動待ち時間が発生 |
| Spot + Autoscaling | ワーカーをSpot、ドライバーをOn-Demand | ワーカーコストを60〜90%削減 | Spot回収時にタスク再実行のオーバーヘッド |
| Instance Pool併用 | Poolからのスケールアップ | 起動時間を30秒〜1分に短縮 | Pool維持コスト(アイドルインスタンス課金) |
| ジョブ固定ノード | Autoscaling無効、固定ワーカー数 | 予測可能なコストとスケジュール | ピーク以外で過剰リソースになる可能性 |
| Policy上限 | Cluster Policyでmax_workersの上限を制約 | 予算超過の構造的防止 | ユーザーの柔軟性が制限される |
Autoscalingの効果はワークロードのタイプによって大きく異なります。
Autoscalingは、Data Engineer Associate / Administration系で出題されます。
Data Engineer Associate
問題 1
データエンジニアが夜間バッチETLジョブを実行している。ジョブは毎晩23:00に開始し、データ量に応じて30分〜2時間で完了する。日中はクラスタを使用しない。コストを最小化しつつピーク時の処理性能を確保する最適なクラスタ構成はどれか。
正解: B
夜間のみ実行するバッチジョブにはJob Clusterが最適です(ジョブ終了後にクラスタが自動破棄されるため日中コストがゼロ)。Autoscalingでデータ量の変動に対応し、Spot Instanceでワーカーコストを削減できます。All-Purpose Clusterの常時起動は日中の無駄が大きく、固定16ワーカーはデータ量が少ない日にも過剰リソースとなります。SQL WarehouseではPythonベースのETLは実行できません。
Autoscalingを有効にすると逆にコストが上がることはありますか?
あります。短時間の負荷スパイクに対してスケールアップが発動し、処理完了後もスケールダウンに数分のラグがあるため、頻繁に負荷が変動するワークロードでは必要以上のワーカーが維持される時間が生じます。対策としてはmin_workersを低めに設定し、Optimized Autoscalingを有効にすることでスケールダウンの応答性を改善できます。ストリーミングジョブなど負荷が一定のワークロードでは、固定ノード数の方がコスト効率が良い場合もあります。
Optimized Autoscaling(Enhanced Autoscaling)と標準Autoscalingの違いは何ですか?
Optimized Autoscalingは、Databricksが提供する強化版のスケーリングアルゴリズムです。標準のSpark Autoscalingが保守的な判断(スケールダウンが遅い)をするのに対し、Optimized版はクラスタ負荷の予測に基づいてスケールダウンを高速化し、不要なワーカーをより早く解放します。AWS/Azure/GCPで利用可能で、追加料金なしで使えます。
Autoscalingの動作状況はどこで確認できますか?
Spark UIのExecutorsタブで、各時点のアクティブなExecutor数を確認できます。クラスタのイベントログ(Cluster Events)では、AUTOSCALING_STATS_REPORTイベントとしてスケールアップ / ダウンの発生タイミングと理由が記録されます。Ganglia MetricsやCluster Metrics(API経由)でも確認可能です。
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の出題...