Databricks Azure のノード割り当て設定の確認

Databricks Azure のスポット VM とオンデマンドへの切り替えを、ワークロードの中断許容範囲に合わせてください。

説明

Databricks Azure クラスターのスポット VM は費用を抑えられますが、回収されることがあります。重要な分析処理では、可用性要件と再実行の費用を考慮し、オンデマンドノードやフォールバックの利用を検討する必要があります。

SPOT_AZURE は first_on_demand で指定したノードより後のノードに適用されます。例では first_on_demand = 1 によりドライバーがオンデマンドとなるため、すべてのノードがスポットという構成ではありません。

想定される影響

  • スポット容量の回収で分析処理が中断することがあります。
  • 共有クラスターや定期実行する処理の復旧が遅れることがあります。
  • 再試行やオンデマンドへの切り替えで費用が増えることがあります。

対処方法

ワークロードの重要度に応じて SPOT_WITH_FALLBACK_AZURE またはオンデマンドを選択してください。ドライバーと必要なノードをオンデマンドにするよう first_on_demand を確認し、回収後の再試行と費用をテストしてください。自動終了時間はアイドル時の費用を管理する設定であり、スポットの回収を防ぎません。

例

以下はデータソース定義を省略し、Databricks provider v1.133.0 がサポートする Azure 属性を使った抜粋です。変更前はオンデマンドのドライバーより後のノードに SPOT_AZURE を指定しています。

変更前

hcl
resource "databricks_cluster" "example" {
  cluster_name            = "data"
  spark_version           = data.databricks_spark_version.latest.id
  node_type_id            = data.databricks_node_type.smallest.id
  autotermination_minutes = 20

  autoscale {
    min_workers = 1
    max_workers = 50
  }

  azure_attributes {
    availability           = "SPOT_AZURE"
    first_on_demand        = 1
  }
}

変更後

hcl
resource "databricks_cluster" "example" {
  cluster_name            = "Shared Autoscaling"
  spark_version           = data.databricks_spark_version.latest.id
  node_type_id            = data.databricks_node_type.smallest.id
  autotermination_minutes = 20

  autoscale {
    min_workers = 1
    max_workers = 50
  }

  azure_attributes {
    availability           = "SPOT_WITH_FALLBACK_AZURE"
    first_on_demand        = 1
  }
}

変更後はスポット容量を確保できない場合にオンデマンドへ切り替えられます。フォールバックは容量の確保に役立ちますが、実行中の処理が中断しないことを保証するものではありません。

参考資料