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