Databricks

Databricks Autoscaling Clusters: 自動スケール・料金・性能のトレードオフ

2026-03-26
更新: 2026-03-27
NicheeLab編集部

Databricksのクラスタオートスケーリングは、ワークロードの負荷に応じてワーカーノード数を自動的に増減させる機能です。 適切に設定すれば、ピーク時の処理性能を確保しつつ、アイドル時のコストを抑えることができます。

ただし、「Autoscalingを有効にすればコスト最適化」は半分正解で半分間違いです。 min/max workersの設定ミス、スケールダウンのラグ、ストリーミングジョブとの相性など、 理解すべきトレードオフがあります。この記事ではAutoscalingの仕組みと設計判断を詳しく解説します。

オートスケーリングの仕組み

DatabricksのAutoscalingは、SparkのDynamic Resource Allocationをベースに、 Databricks独自の最適化を加えた仕組みです。 クラスタ作成時にmin_workers(最小ワーカー数)とmax_workers(最大ワーカー数)を指定すると、 以下のロジックでワーカー数が自動調整されます。

  • スケールアップ:未処理のタスク(pending tasks)がある場合、 必要なワーカー数を計算してmax_workersの範囲内でノードを追加
  • スケールダウン:アイドル状態のワーカーが一定時間続くと、 min_workersまでノードを段階的に削除
  • スケールダウンのラグ:標準Autoscalingでは、スケールダウンまでに 数分(通常2〜5分)のクールダウン期間があり、即座には解放されない

設定パラメータ一覧

パラメータ説明推奨値の目安
min_workers最小ワーカー数。負荷がなくてもこの台数は維持される1〜2(コスト重視)/ 予想最低負荷に合わせる
max_workers最大ワーカー数。ピーク負荷でもこの台数を超えないCluster Policyで上限を制約するのが実務上の定石
autoscale.target_workersDatabricks内部で計算されるスケーリング目標値ユーザーが直接設定する項目ではない
spark.databricks.autoscaling.enabledOptimized Autoscalingの有効/無効有効推奨
autotermination_minutesクラスタ全体のアイドル自動終了時間10〜30分(Policyで最小値を強制)
spot_bid_max_priceSpotインスタンスの最大入札価格(AWS)-1(オンデマンド価格まで許容)が一般的

Optimized Autoscaling(Enhanced Autoscaling)

Databricksは標準のSpark Autoscalingに加えて、Optimized Autoscaling(一部ドキュメントではEnhanced Autoscaling) を提供しています。これはDatabricks独自のスケーリングアルゴリズムで、 標準版と比較して以下の改善があります。

比較項目標準AutoscalingOptimized Autoscaling
スケールアップ速度pending tasksベースで反応負荷予測に基づき先行スケールアップ
スケールダウン速度保守的(クールダウン長め)高速(不要ノードを早期解放)
Shuffleデータの考慮Shuffleデータを保持するノードは解放しないShuffleデータの再計算コストを考慮して最適判断
追加料金なしなし
対応ワークロード全般バッチ処理に特に効果的

Optimized Autoscalingはデフォルトで有効になっている場合が多いですが、 クラスタ設定で明示的に確認・有効化することを推奨します。

Spark UIでのスケール確認

Autoscalingの動作を確認するためのUIとログは以下の通りです。

  • Spark UI → Executorsタブ:現在のアクティブExecutor数、 追加済み / 削除済みExecutorの履歴が表示される。 スケールアップ / ダウンのタイミングを時系列で把握できる
  • Cluster Events:クラスタの詳細ページ → イベントログで、 AUTOSCALING_STATS_REPORT / RESIZING / UPSIZE_COMPLETED / DOWNSIZE_COMPLETED などのイベントが記録される
  • ドライバログ:log4jログにスケーリング判断の詳細が出力される。 デバッグ時に有用

実務では、スケールアップが頻繁すぎる場合は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の上限を制約予算超過の構造的防止ユーザーの柔軟性が制限される

ストリーミング vs バッチでのAutoscaling

Autoscalingの効果はワークロードのタイプによって大きく異なります。

  • バッチ処理:負荷の山と谷が明確なため、Autoscalingの恩恵が大きい。 ETLジョブの実行中はスケールアップし、完了後にスケールダウンする理想的なパターン
  • ストリーミング処理:常に一定の負荷がかかるため、Autoscalingの効果は限定的。 マイクロバッチのバースト(夜間データ量増加など)には対応できるが、 定常状態では固定ノード数の方がシンプルでコスト予測しやすい
  • Delta Live Tables:DLTはEnhanced Autoscalingを内部で利用。 パイプラインの各ステップの負荷に応じて自動スケールし、ユーザーは意識不要

試験で問われるポイント

Autoscalingは、Data Engineer Associate / Administration系で出題されます。

  • 「ワークロードの負荷変動に応じてクラスタサイズを自動調整するには?」→ Autoscaling(min/max workers設定)
  • 「Autoscalingを有効にしてもコストが下がらない。考えられる原因は?」→ min_workersが高すぎる / スケールダウンのラグ
  • 「クラスタの起動時間を短縮するには?」→ Instance Pool(Autoscalingとは別の機能)
  • 「max_workersの上限を管理者が制御するには?」→ Cluster Policy

問題で確認

Data Engineer Associate

問題 1

データエンジニアが夜間バッチETLジョブを実行している。ジョブは毎晩23:00に開始し、データ量に応じて30分〜2時間で完了する。日中はクラスタを使用しない。コストを最小化しつつピーク時の処理性能を確保する最適なクラスタ構成はどれか。

  1. All-Purpose Clusterを常時起動し、Autoscaling(min=1, max=16)を設定する
  2. Job Clusterとして構成し、Autoscaling(min=2, max=16)+ Spot Instanceを有効にする
  3. Job Clusterとして構成し、固定16ワーカー + On-Demand Instanceを設定する
  4. SQL Warehouseを使用し、Serverlessモードで実行する

正解: 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経由)でも確認可能です。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Databricks

Databricks資格一覧|全7試験・難易度・勉強法

Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...

Databricks

Databricks試験の難易度ランキング|全7資格を徹底比較

Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...

Databricks

Databricks資格の勉強方法|最短合格ルートと学習時間の目安

Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...

Databricks

Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略

Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...

Databricks

Databricks Data Engineer Professional完全解説|上級試験の攻略法

Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...

Databricksの記事一覧 (105件)
© 2026 NicheeLab All rights reserved.