スポットインスタンスの喪失
クラウドプロバイダーがプリエンプティブル VM インスタンスを再利用すると、それらのインスタンスのエグゼキュータは終了し、アクティブなタスクはすべて失敗します。Spark はそれらのタスクを再実行する必要があり、これによりジョブが遅くなり、ステージやジョブの失敗が発生する可能性があります。
コンピュートの イベント ログ にプリエンプティブル VM インスタンスが失われたか、再利用されたことが表示されている場合に、このページを使用します。イベントログにオートスケールのためにコンピュートがサイズ変更されたことが表示されている場合、エグゼキューターの削除は予期されたものであり、エラーではありません。イベントログにエグゼキューターの喪失の説明がない場合は、失敗したジョブまたは削除されたエグゼキューターを参照してください。
スポットインスタンスの損失を削減する
プリエンプティブルVMインスタンスが頻繁に失われるということは、インスタンスタイプのリクレイム率が高いことを意味している可能性があります。損失を減らすために、次のアプローチを試してください:
- プリエンプション率が低いインスタンスタイプを選択します。 プリエンプションの頻度が低いインスタンスタイプに変更します。
- プリエンプティブル VM の使用を停止します。 コンピュート設定の [ 高度なパフォーマンス ] で [ プリエンプティブル インスタンスを使用 ] チェックボックスをオフにします。プリエンプティブル VM が使用できない場合にコンピュートがオンデマンド インスタンスにフォールバックするかどうかを制御するには、
gcp_attributes.gcp_availabilityを設定します。 プリエンプティブル・インスタンスを参照してください。
ドライバーおよびレイテンシーに影響を受けやすいワークロードにはオンデマンドインスタンスを使用してください
クラウドプロバイダーがドライバーを再利用すると、ジョブは直ちに失敗します。Databricksでは、クラウドプロバイダーがドライバーノードを再利用できないように、ドライバーノードにオンデマンドインスタンスを使用することを推奨しています。ワーカーにプリエンプティブルVMインスタンスプールを使用する場合は、 ドライバータイプ としてオンデマンドプールを選択してください。プールのベストプラクティスを参照してください。
オンデマンド ドライバーはワーカーを保護しません。クラウドプロバイダーがワーカーを回収すると、そのエグゼキューターは終了し、アクティブなタスクは失敗します。ジョブは続行されますが、Sparkはそれらのタスクを再実行する必要があるため、ジョブが遅くなり、ステージまたはジョブの失敗を引き起こす可能性があります。プリエンプティブルVMインスタンスは、遅延を許容できるワークロードに対してのみ使用してください。「クラシック コンピュート構成のベストプラクティス」を参照してください。