プールのベストプラクティス
この記事では、プールとは何か、およびプールを最適に構成する方法について説明します。 プールの作成については、 「プール構成リファレンス」を参照してください。
注:
ワークロードがサーバレス コンピュートをサポートしている場合、 Databricks では、プールの代わりにサーバレス コンピュートを使用して、常時稼働でスケーラブルなコンピュートを利用することをお勧めします。 Connect to サーバレス コンピュートを参照してください。
プールに関する考慮事項
プールを作成するときは、次の点を考慮してください。
ターゲット ワークロードに基づいて、インスタンスの種類と Databricks ランタイムを使用してプールを作成します。
可能であれば、コストを削減するためにスポットインスタンスをプールに追加します。 スポット プールはワーカー ノードとしてのみ使用します。 ドライバー ノードでは、オンデマンド インスタンスを使用する必要があります。
実行時間が短く、実行時間の要件が厳しいジョブのオンデマンドインスタンスをプールに入力します。
プール タグとクラスター タグを使用して課金を管理します。
プールを事前設定して、クラスターで必要なときにインスタンスを使用できるようにします。
ワークロードに基づいてプールを作成する
組織で一般的に使用するインスタンスの種類と Databricks ランタイムごとにプールを作成することで、インスタンスの取得時間を最小限に抑えることができます。 たとえば、ほとんどの データエンジニアリング クラスターがインスタンスタイプ A を使用し、データサイエンスクラスターがインスタンスタイプ B を使用し、アナリティクスクラスターがインスタンスタイプ C を使用する場合、各インスタンスタイプでプールを作成します。
スポットインスタンスプールの使用
ドライバー ノードとワーカー ノードの要件が異なる場合は、それぞれに異なるプールを使用します。
Databricks では、ドライバー ノードにスポット インスタンスを使用しないことを推奨しています。 ワーカー ノードにスポット プールを使用する場合は、ドライバー タイプとしてオンデマンド プールを選択します。
実行時間が短く、実行時間の要件が厳しいジョブにオンデマンド インスタンスを使用するようにプールを構成します。 オンデマンドインスタンスを使用して、取得したインスタンスがスポット市場で高額入札者に奪われるのを防ぎます。
インタラクティブな開発をサポートするクラスターや、信頼性よりもコスト削減を優先するジョブにスポットインスタンスを使用するようにプールを構成します。
コストと課金を管理するためのタグ プール
プールを正しいコスト・センターにタグ付けすると、コストと使用量のチャージバックを管理できます。 複数のカスタムタグを使用して、複数のコストセンターをプールに関連付けることができます。 ただし、クラスターがプールから作成されるときにタグがどのように伝達されるかを理解することが重要です。 プールのタグは基盤となるクラウドプロバイダーインスタンスに伝達されますが、クラスターのタグは伝達されません。 クラウド・プロバイダーのコンピュート・コストのチャージバックを管理するために必要なすべてのカスタム・タグをプールに適用します。
プール タグとクラスター タグはどちらも Databricks の課金に反映されます。 クラスター タグとプール タグの組み合わせを使用して、Databricks ユニットのチャージバックを管理できます。
詳細については、 「タグを使用して使用状況を監視する」を参照してください。
コストを制御するためのプールの構成
次の構成オプションを使用して、プールのコストを制御できます。
[Min Idle] インスタンスを 0 に設定して、作業を行っていない実行中のインスタンスに対する支払いを回避します。トレードオフは、クラスタリングが新しいインスタンスを取得する必要がある場合に時間が増加する可能性があることです。
予想される使用量に基づいて 最大容量 を設定します。 これにより、プール内の使用済みインスタンスとアイドル状態のインスタンスの最大数の上限が設定されます。 ジョブまたはクラスタリングが最大容量でプールからインスタンスを要求した場合、リクエストは失敗し、クラスタリングはそれ以上のインスタンスを取得しません。 そのため、Databricks では、インスタンスのクォータまたは予算の制約が厳密な場合にのみ、最大容量を設定することをお勧めします。
インスタンスがクラスターから解放されてからプールからドロップされるまでのバッファーを提供するために、 アイドルインスタンスの自動終了 時間を設定します。 これは、スケジュールされたジョブのインスタンスの可用性を確保しながら、コストを最小限に抑えることができる期間に設定します。 たとえば、ジョブ A が午前 8:00 に実行するようにスケジュールされ、完了するまでに 40 分かかるとします。 ジョブ B は午前 9:00 に実行するようにスケジュールされており、完了するまでに 30 分かかります。 [アイドル インスタンスの自動終了] の値を 20 分に設定して、ジョブ A の完了時にプールに戻されたインスタンスが、ジョブ B の開始時に使用できるようにします。 別のクラスターによって要求されない限り、これらのインスタンスはジョブ B が終了してから 20 分後に終了します。
プールの事前設定
プールを最大限に活用するために、新しく作成したプールを事前に設定することができます。 プール構成で [最小アイドル インスタンス数] を 0 より大きく設定します。 または、この値を 0 に設定する推奨事項に従っている場合は、スターター ジョブを使用して、新しく作成されたプールにクラスターがアクセスできるインスタンスがあることを確認します。
スターター・ジョブ・アプローチでは、柔軟な実行時間要件を持つジョブを、より厳しいパフォーマンス要件を持つジョブの前、またはユーザーが対話型クラスターの使用を開始する前に実行するようにスケジュールします。 ジョブが終了すると、ジョブに使用されたインスタンスが解放されてプールに戻されます。 [Min Idle instance] 設定を 0 に設定し、[Idle Instance Auto Termination time] を十分な長さに設定して、アイドル状態のインスタンスが後続のジョブで使用可能な状態を維持できるようにします。
スターター ジョブを使用すると、プール インスタンスをスピンアップし、プールにデータを設定し、ダウンストリーム ジョブまたは対話型クラスターで引き続き使用できます。