柔軟なノードタイプを使用してコンピュート起動の信頼性を向上
Databricksのクラシック コンピュート リソースは柔軟なノード タイプを使用するため、指定したインスタンス タイプが使用できない場合、コンピュート リソースは代替の互換性のあるインスタンス タイプにフォールバックできます。
この動作により、コンピュート起動中の容量障害 (在庫切れエラー) が減少し、コンピュート起動の信頼性が向上します。 フォールバックを備えたスポット インスタンスの場合、フレキシブル ノード タイプは、オンデマンド インスタンスにフォールバックする前に、さまざまなインスタンス タイプ間でインスタンスの取得を複数回試みることができます。これにより、オンデマンドではなくスポットとして実行されるインスタンスの割合が高くなり、総コンピュート コストが削減されます。
柔軟なノードタイプの仕組み
コンピュート リソースを起動すると、クラウド プロバイダーが指定したインスタンス タイプの容量を超えて実行することがあります。 これにより在庫切れエラーが発生します。
GCP_INSUFFICIENT_CAPACITY
これらのエラーはスポットインスタンスでよく発生しますが、オンデマンドインスタンスでも発生する可能性があります。
柔軟なノード タイプを有効にすると、Databricks は互換性のあるインスタンス タイプの指定されたフォールバック リストを自動的に生成または使用します。優先インスタンス タイプが利用できない場合、Databricks はすぐに失敗するのではなく、これらのバックアップ インスタンス タイプを取得しようとします。
ワークスペースで柔軟なノードタイプを有効にする
ワークスペース管理者は、ワークスペース管理設定で柔軟なノード タイプを有効にすることができます。 有効にすると、すべての新しいクラシック コンピュート リソースは自動的に代替ノード タイプにフォールバックします。 既存の汎用コンピュート リソースは影響を受けません。 「既存のワークロードにはどのような影響がありますか?」を参照してください。
ワークスペースで柔軟なノード タイプを有効にするには:
- ワークスペース管理者として、設定ページに移動します。
- 「 コンピュート 」タブをクリックします。
- 自動フレキシブルノードタイプを有効にする 設定を切り替えます。
- Enabled : すべての新しいクラシック コンピュート リソースは、明示的に無効にしない限り、フレキシブル ノード タイプを自動的に使用します。
- 無効 : コンピュート リソース構成で明示的に
node_type_flexibility構成した場合、クラシック コンピュート リソースはフレキシブル ノード タイプのみを使用します。
この設定が無効になっている場合でも、ユーザーはカスタム フォールバック リストを使用してworker_node_type_flexibilityまたはdriver_node_type_flexibilityフィールドを明示的に構成することで、個々のコンピュート リソースに対して柔軟なノード タイプを構成できます。 ユーザーがこれらのフィールドを設定できないようにするには、ワークスペース管理者はコンピュート ポリシーを使用できます。 柔軟なノード タイプ ポリシーの例を参照してください。
カスタムフォールバックリストを指定する
ワークスペースでフレキシブル ノード タイプが有効になっている場合、 Databricks新しいコンピュート リソースに対して互換性のあるインスタンス タイプのフォールバック リストを自動的に生成します。
自動的に生成されたフォールバック リストを使用しない場合は、代わりに独自のフォールバック リストを指定できます。さらに、ワークスペースでフレキシブル ノード タイプが無効になっている場合でも、コンピュート リソースのカスタム フォールバック リストを指定できます。 互換性があるのは特定のインスタンスの種類のみです。フォールバックインスタンスタイプの要件を参照してください。互換性のあるインスタンス タイプのリファレンスについては、柔軟なノード タイプの互換性リファレンスを参照してください。
カスタム フォールバック リストは、 APIを使用してコンピュートを構成する場合にのみサポートされます。 リファレンスAPI ドキュメントを参照してください。
たとえば、次の構成では、必要に応じてコンピュート リソースがどのインスタンス タイプにフォールバックするかを指定します。
"worker_node_type_flexibility": {
"alternate_node_type_ids": [
"n2-highmem-8"
]
},
"driver_node_type_flexibility": {
"alternate_node_type_ids": [
"n2-highmem-8"
]
},
フォールバックインスタンスタイプの要件
フォールバック インスタンス タイプは、コンピュートの優先インスタンス タイプと互換性がある必要があります。 フォールバックインスタンスタイプのリストは、次の要件を満たしている必要があります。
-
優先インスタンス タイプと同じ vCPU 数とメモリ (フォールバック インスタンスには優先インスタンス タイプのメモリの 100% ~ 110% が必要です)
-
優先インスタンスタイプと同じ数のローカルディスクとディスクサイズ
-
優先インスタンスタイプと同じ CPU アーキテクチャ (すべて ARM またはすべて x86)
-
優先インスタンスタイプと同じ OS イメージと Photon サポート
-
GPU インスタンス タイプはありません (GPU はサポートされていません)
-
最大 5 つの固有のフォールバック インスタンス タイプ
-
すべてのインスタンス タイプは、一貫したストレージ サポートを備えている必要があります。つまり、すべてが HYPERDISK_BALANCED ストレージをサポートするか、まったくサポートしないかのいずれかです。ローカル SSD の数は、フォールバック リスト内のすべてのインスタンス タイプに対して有効である必要があります。
プールで柔軟なノードタイプを使用する
プールのフォールバック リストをカスタマイズすることもできます。プール APIで、 node_type_flexibilityフィールドを設定してフォールバックインスタンスタイプを指定します。例えば:
"node_type_flexibility": {
"alternate_node_type_ids": ["n2-highmem-8"]
}
プールは、最小のアイドル数を維持するための柔軟なインスタンス タイプの使用をサポートしていません。プールからのコンピュート起動が試行される場合、プールはフォールバック インスタンス タイプを使用して VM を起動することしかできません。 minIdleカウントの事前ウォーミングでは、優先インスタンス タイプのみが使用されます。
取得したインスタンスタイプを表示する
柔軟なノード タイプを使用する場合、コンピュート リソースはさまざまなインスタンス タイプの組み合わせで構成される場合があります。 すべてのフォールバックインスタンスタイプは優先タイプと互換性があり、同じ vCPU 数、メモリ、ディスクレイアウト、CPU アーキテクチャ、OS イメージを維持して、ワークロードが正しく実行されるようにします。
コンピュート リソース用に取得されたインスタンス タイプを表示できます。
- [コンピュートの詳細] ページで、 [終了] ボタンの横にある 3 つの点をクリックし、 JSON表示] を選択します。
- 各エグゼキューターの
node_type_idフィールドを確認して、どのインスタンス タイプが実行されているかを確認します。
Get Cluster info APIを使用して、この情報をプログラムで取得することもできます。 さらに、システムテーブルへのアクセス権限を持つユーザーは、 node_timelinesテーブルをクエリできます。 ノードタイムラインテーブルスキーマを参照してください。
コンピュート リソースでフレキシブル ノード タイプを無効にする
Databricks では、特定のインスタンスの種類に厳しい要件がない限り、柔軟なノードの種類を有効にしておくことをお勧めします。
別のインスタンス タイプにフォールバックするのではなく、コンピュートの起動が失敗することを希望する場合は、個々のコンピュート リソース レベルで柔軟なノードの動作を無効にすることができます。 これは、 APIを使用する場合にのみサポートされます。 フレキシブル ノード タイプを無効にするには、コンピュート構成でフレキシブル ノード タイプ フィールドを空に設定します。 例えば:
"worker_node_type_flexibility": {
"alternate_node_type_ids": []
},
"driver_node_type_flexibility": {
"alternate_node_type_ids": []
}
よくある質問
既存のワークロードにはどのような影響がありますか?
既存の汎用コンピュート リソースは変更されません。 自動フォールバックを使用するには、設定を有効にした後に新しい汎用コンピュート リソースを作成するか、カスタム フォールバック リストを使用してコンピュート リソースAPI仕様を更新します。
ジョブ コンピュートを使用するジョブの場合、実行ごとに新しいコンピュート リソースが作成されるため、既存のジョブの後続の実行では自動的に柔軟なフォールバックが使用されます。
これはインスタンス プールでも機能しますか?
はい。柔軟なノード タイプはインスタンス プールの構成に適用されます。注意すべき点:
- 最小アイドル状態の一貫性 : プールの最小アイドル インスタンス (
minIdle) は、プライマリ ノード タイプを使用して維持されます。プライマリ タイプが制約されている場合、クラスター起動要求を通じて起動された新しい VM は、互換性のあるフォールバック ノード タイプを使用して実現できます。 - プールの編集 : インスタンス プールは作成後に編集できません。 カスタム フォールバック設定を変更する場合は、新しいインスタンス プールを作成する必要があります。
- API の可視性 : プールでカスタム フォールバック リストを明示的に構成していない限り、
/api/2.0/instance-pools/get応答にはノード タイプの柔軟性は表示されません。インスタンス プールのフォールバック構成を確認するには、サンプル クラスターを作成し、/api/2.1/clusters/get応答を表示します。
請求はどのように行われますか?
実際に取得したインスタンスタイプの標準 DBU 料金に基づいて課金されます。クラウド プロバイダーとのインスタンス レベルの割引は、コンピュート リソースで使用される一致するインスタンス タイプに自動的に適用されます。
これはワークスペース内のノード タイプ クォータとどのように連携しますか?
プライマリノードタイプが「クォータ超過」制限に達したためにコンピュートの起動が失敗した場合でも、フレキシブルノードタイプは互換性のある代替ノードタイプに自動的にフォールバックすることで、起動の信頼性を向上させることができます。 ただし、クォータによる障害の場合、Databricks では、フォールバックを主な修正方法ではなく、安全策として扱うことを推奨しています。クラウド プロバイダーにクォータの増加をリクエストして、代替手段に頼ったり、サーバーレス コンピュートを使用したりする前に、 Databricks優先インスタンス タイプを一貫して取得できるようにすることができます。
ワークロードのサブセットに対してのみ柔軟なノード タイプを有効にすることはできますか?
自動生成されたノード タイプのフォールバックは、ワークスペース レベルでのみ構成できます。ただし、特定のワークロードのフォールバック動作を制御するには、次の 2 つのオプションがあります。
- (推奨) ワークスペースに対して柔軟なノード タイプを有効にし、そのクラスターの仕様で
alternate_node_type_ids空のリスト[]に設定して、特定のクラスターをオプトアウトします。 - ワークスペース全体に対して柔軟なノード タイプを無効にし、互換性要件を満たすカスタム フォールバック リストを
alternate_node_type_idsに提供して、特定のクラスター仕様を選択します。