プールのベストプラクティス

この記事では、プールとは何か、およびプールを最適に構成する方法について説明します。 プールの作成については、 「プール構成リファレンス」を参照してください。

プールに関する考慮事項

プールを作成するときは、次の点を考慮してください。

  • ターゲット ワークロードに基づいて、インスタンスの種類と Databricks ランタイムを使用してプールを作成します。

  • 可能な場合は、プールにスポットインスタンスを設定してコストを削減します。

  • 実行時間が短く、実行時間の要件が厳しいジョブのオンデマンドインスタンスをプールに入力します。

  • プール タグとクラスター タグを使用して課金を管理します。

  • プールを事前設定して、クラスターで必要なときにインスタンスを使用できるようにします。

ワークロードに基づいてプールを作成するCreate pool based on workloads

ドライバー ノードとワーカー ノードの要件が異なる場合は、それぞれに異なるプールを作成します。

組織で一般的に使用するインスタンスの種類と Databricks ランタイムごとにプールを作成することで、インスタンスの取得時間を最小限に抑えることができます。 たとえば、ほとんどの データエンジニアリング クラスターがインスタンスタイプ A を使用し、データサイエンスクラスターがインスタンスタイプ B を使用し、アナリティクスクラスターがインスタンスタイプ C を使用する場合、各インスタンスタイプでプールを作成します。

実行時間が短く、実行時間の要件が厳しいジョブにオンデマンド インスタンスを使用するようにプールを構成します。 オンデマンドインスタンスを使用して、取得したインスタンスがスポット市場で高額入札者に奪われるのを防ぎます。

インタラクティブな開発をサポートするクラスターや、信頼性よりもコスト削減を優先するジョブにスポットインスタンスを使用するようにプールを構成します。

コストと課金を管理するためのタグ プール

プールを正しいコスト・センターにタグ付けすると、コストと使用量のチャージバックを管理できます。 複数のカスタムタグを使用して、複数のコストセンターをプールに関連付けることができます。 ただし、クラスターがプールから作成されるときにタグがどのように伝達されるかを理解することが重要です。 プールのタグは基盤となるクラウドプロバイダーインスタンスに伝達されますが、クラスターのタグは伝達されません。 クラウド・プロバイダーのコンピュート・コストのチャージバックを管理するために必要なすべてのカスタム・タグをプールに適用します。

プール タグとクラスター タグはどちらも Databricks の課金に反映されます。 クラスター タグとプール タグの組み合わせを使用して、Databricks ユニットのチャージバックを管理できます。

詳細については、 「タグを使用して使用状況を監視する」を参照してください。

コストを制御するためのプールの構成

次の構成オプションを使用して、プールのコストを制御できます。

  • [Min Idle instances] を 0 に設定して、動作していない実行中のインスタンスに対する支払いを回避します。トレードオフは、クラスターが新しいインスタンスを取得する必要がある場合に時間がかかる可能性があることです。

  • インスタンスがクラスターから解放されてからプールからドロップされるまでのバッファーを提供するために、 アイドルインスタンスの自動終了 時間を設定します。 これは、スケジュールされたジョブのインスタンスの可用性を確保しながら、コストを最小限に抑えることができる期間に設定します。 たとえば、ジョブ A が午前 8:00 に実行するようにスケジュールされ、完了するまでに 40 分かかるとします。 ジョブ B は午前 9:00 に実行するようにスケジュールされており、完了するまでに 30 分かかります。 [アイドル インスタンスの自動終了] の値を 20 分に設定して、ジョブ A の完了時にプールに戻されたインスタンスが、ジョブ B の開始時に使用できるようにします。 別のクラスターによって要求されない限り、これらのインスタンスはジョブ B が終了してから 20 分後に終了します。

  • 予想される使用量に基づいて 最大容量 を設定します。 これにより、プール内の使用済みインスタンスとアイドル状態のインスタンスの最大数の上限が設定されます。 ジョブまたはクラスターが最大容量でプールからインスタンスを要求した場合、要求は失敗し、クラスターはそれ以上のインスタンスを取得しません。 そのため、Databricks では、インスタンスのクォータまたは予算の制約が厳密な場合にのみ、最大容量を設定することをお勧めします。

プールの事前設定

プールを最大限に活用するために、新しく作成したプールを事前に設定することができます。 プール構成で [最小アイドル インスタンス数] を 0 より大きく設定します。 または、この値を 0 に設定する推奨事項に従っている場合は、スターター ジョブを使用して、新しく作成されたプールにクラスターがアクセスできるインスタンスがあることを確認します。

スターター・ジョブ・アプローチでは、柔軟な実行時間要件を持つジョブを、より厳しいパフォーマンス要件を持つジョブの前、またはユーザーが対話型クラスターの使用を開始する前に実行するようにスケジュールします。 ジョブが終了すると、ジョブに使用されたインスタンスが解放されてプールに戻されます。 [Min Idle instance] 設定を 0 に設定し、[Idle Instance Auto Termination time] を十分な長さに設定して、アイドル状態のインスタンスが後続のジョブで使用可能な状態を維持できるようにします。

スターター ジョブを使用すると、プール インスタンスをスピンアップし、プールにデータを設定し、ダウンストリーム ジョブまたは対話型クラスターで引き続き使用できます。