説明
Databricks GCP クラスターのプリエンプティブルインスタンスは回収されることがあり、処理の中断や再処理が必要になる場合があります。費用削減だけでなく、中断の許容範囲、オンデマンドノード、フォールバックの方針も考慮する必要があります。
想定される影響
- インスタンスの回収で実行中の処理が中断することがあります。
- クラスターの復旧や再処理にかかる費用が増えることがあります。
- 本番の分析処理の完了時刻が予測しにくくなることがあります。
対処方法
ワークロードの要件に応じて PREEMPTIBLE_WITH_FALLBACK_GCP または ON_DEMAND_GCP を選択してください。対応する provider バージョンで first_on_demand に必要なオンデマンドノード数を指定し、回収後の復旧と費用をテストしてください。フォールバックや自動終了の設定だけでは、無停止の実行を保証できません。
例
以下はデータソース定義を省略した Databricks provider v1.133.0 の設定例です。変更前は PREEMPTIBLE_GCP を使い、オンデマンドノード数を明示していません。
変更前
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
}
gcp_attributes {
availability = "PREEMPTIBLE_GCP"
zone_id = "AUTO"
}
}
変更後
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
}
gcp_attributes {
availability = "PREEMPTIBLE_WITH_FALLBACK_GCP"
zone_id = "AUTO"
first_on_demand = 1
}
}
変更後は first_on_demand = 1 によりドライバーをオンデマンドに配置し、プリエンプティブル容量を確保できない場合は残りのノードをオンデマンドに切り替えられます。zone_id = "AUTO" は一つの可用性ゾーンを自動選択する設定であり、ノードを複数のゾーンに分散する設定ではありません。