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

Databricks AWS クラスターのスポットノード、オンデマンドノード、可用性ゾーンの選択が復旧要件に合っているか確認してください。

説明

Databricks AWS クラスターのスポットノードは回収されることがあり、処理の中断や再実行につながります。ワークロードの重要度と中断の許容範囲に応じて、オンデマンドノード数とフォールバックの利用を決める必要があります。

availability は、first_on_demand で指定したオンデマンドノードより後のノードに適用されます。そのため、SPOT という値だけで、すべてのノードがスポットであるとはいえません。

想定される影響

  • スポットノードの回収で処理が中断したり、再起動が必要になったりします。
  • バッチ処理や共有分析環境の復旧に時間がかかることがあります。
  • オンデマンドへの切り替えや再処理で、想定費用が変わることがあります。

対処方法

中断を許容しにくいワークロードにはオンデマンドノードを使うか、SPOT_WITH_FALLBACK を検討してください。ドライバーをオンデマンドにするには first_on_demand を 1 以上に設定し、可用性ゾーンと復旧手順も確認してください。フォールバックも無停止の実行を保証しないため、費用と再試行の動作をテストしてください。

例

以下はデータソース定義を省略したクラスター設定の抜粋です。どちらも first_on_demand = 1 なので、ドライバーはオンデマンドです。変更前は残りのノードに SPOT を使います。

変更前

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
  }

  aws_attributes {
    availability           = "SPOT"
    zone_id                = "auto"
    first_on_demand        = 1
    spot_bid_price_percent = 100
  }
}

変更後

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
  }

  aws_attributes {
    availability           = "SPOT_WITH_FALLBACK"
    zone_id                = "auto"
    first_on_demand        = 1
    spot_bid_price_percent = 100
  }
}

変更後はスポット容量を確保できない場合にオンデマンドへ切り替えられます。zone_id = "auto" は起動時のゾーンを自動選択する設定であり、稼働中のクラスターを複数の可用性ゾーンに分散する設定ではありません。

参考資料