メインコンテンツまでスキップ

オートスケールでLakeflow Spark宣言型パイプラインのクラスター利用を最適化

この記事では、拡張オートスケールを使用してDatabricks上のパイプラインを最適化する方法について説明します。

強化オートスケールは、すべての新しいパイプラインのデフォルトによって有効になります。 サーバレス パイプラインも垂直オートスケールを使用します。 垂直 オートスケールとはを参照してください。

サーバレス パイプラインの場合、強化オートスケールは常にオンになっており、無効にすることはできません。 サーバレス パイプラインの設定を参照してください。

強化 オートスケールとは?

Databricks 強化 オートスケールは、ワークロードの量に基づいてクラスター リソースを自動的に割り当てることで、パイプラインのデータ処理レイテンシへの影響を最小限に抑えながら、クラスターの使用率を最適化します。

強化オートスケールは、Databricksのクラスター オートスケールの機能を強化し、次の機能を備えています。

  • 強化オートスケールは、ストリーミングワークロードの最適化を実装し、バッチワークロードのパフォーマンスを向上させるための拡張機能を追加します。 強化オートスケールは、ワークロードの変化に応じてマシンを追加または削除することでコストを最適化します。
  • 拡張 オートスケールは、使用率の低いノードをプロアクティブにシャットダウンし、シャットダウン中にタスクが失敗しないことを保証します。 既存のクラスター オートスケール機能は、ノードがアイドル状態の場合にのみノードをスケールダウンします。

拡張オートスケールは、パイプライン UI で新しいパイプラインを作成するときのデフォルトのオートスケール モードです。 UI でパイプライン設定を編集することで、既存のパイプラインに対して拡張オートスケールを有効にすることができます。 パイプラインREST APIを使用してパイプラインを作成または編集するときに、拡張オートスケールを有効にすることもできます。

強化 オートスケールはスケールアップやスケールダウンの判断にどのメトリクスを使用していますか?

強化オートスケールは、2つのメトリクスを使用してスケールアップまたはスケールダウンを決定します。

  • タスク スロット使用率 : これは、クラスターで使用可能なタスク スロットの合計 に対する ビジー タスク スロットの数 の平均比率です。
  • タスクキューサイズ : タスクスロット内で実行を待っているタスクの数です。

パイプラインの拡張オートスケールを有効にする

拡張オートスケールは、パイプライン UI で新しいパイプラインを作成するときのデフォルトのオートスケール モードです。 UI でパイプライン設定を編集することで、既存のパイプラインに対して拡張オートスケールを有効にすることができます。 Lakeflow Pipelines Editorでパイプラインを編集するときに、拡張オートスケールを有効にすることもできます。

強化オートスケールを使用するには、次のいずれかの操作を行います。

  • Lakeflow Pipelines Editor でパイプライン設定を編集するときは 、クラスター モードEnhanced オートスケール に設定します。
  • パイプライン クラスター構成にautoscale設定を追加し、 modeフィールドをENHANCEDに設定します。「パイプライン用のクラシック コンピュートの構成」を参照してください。

強化オートスケールを本番運用 パイプラインに設定する場合は、次のガイドラインを使用してください。

  • Min workers設定はデフォルトのままにしておきます。
  • Max workers設定を、予算とパイプラインの優先度に基づいた値に設定します。

次の例では、最小 5 人のワーカーと最大 10 人のワーカーを持つ強化オートスケール クラスターを構成します。 max_workersmin_workers以上である必要があります。

注記
  • 強化 オートスケールは、 updates クラスターでのみ使用できます。 レガシー オートスケールは、 maintenance クラスターに使用されます。
  • autoscale構成には 2 つのモードがあります。
JSON
{
"clusters": [
{
"autoscale": {
"min_workers": 5,
"max_workers": 10,
"mode": "ENHANCED"
}
}
]
}

パイプラインが連続実行に設定されている場合は、オートスケールの設定が変更されると自動的に再開されます。 再起動後、待機時間が短時間増加することが予想されます。 この短い待機時間の増加の後、クラスター サイズは autoscale 構成に基づいて更新され、パイプラインの待機時間は以前の待機時間特性に戻る必要があります。

強化オートスケールを使用するパイプラインのコストを制限する

注記

サーバレスパイプラインに対してワーカーを設定することはできません。

パイプラインの コンピュート ペインで ワーカーの最大数 パラメーターを設定すると、オートスケールの上限が設定されます。使用可能なワーカーの数を減らすと、一部のワークロードのレイテンシーが増加する可能性がありますが、コンピュートを集中的に使用する操作中にコンピュート リソースのコストがバーストするのを防ぐことができます。

Databricks では、特定のニーズに合わせてコストと待機時間のトレードオフのバランスを取るために、 最大ワーカー数 の設定を調整することをお勧めします。

パイプラインUIのコンピュートペインでは、オートスケールのワーカーの最大数を設定できます

強化オートスケール有効化クラシックパイプラインの監視

パイプライン ユーザー インターフェイスのイベント ログを使用して、クラシック パイプライン用の強化されたオートスケール メトリクスを監視できます。 拡張オートスケール イベントのイベント タイプはautoscaleです。 イベントの例を次に示します。

イベント

メッセージ

クラスター サイズ変更要求が開始されました

Scaling [up or down] to <y> executors from current cluster size of <x>

クラスター サイズ変更要求が成功しました

Achieved cluster size <x> for cluster <cluster-id> with status SUCCEEDED

クラスター サイズ変更要求が部分的に成功しました

Achieved cluster size <x> for cluster <cluster-id> with status PARTIALLY_SUCCEEDED

クラスター サイズ変更要求が失敗しました

Achieved cluster size <x> for cluster <cluster-id> with status FAILED

強化オートスケール イベントを表示するには、 イベント ログを直接クエリします。

垂直 オートスケールとは?

サーバーレス パイプラインは、 Databricksによって提供される水平オートスケールに追加され、メモリ不足エラーによって失敗することなくパイプラインを実行できる最もコスト効率の高いインスタンス タイプを自動的に割り当てることで強化されたオートスケールを実現します。 垂直オートスケールは、パイプライン更新を実行するためにより大きなインスタンス タイプが必要な場合にスケールアップし、より小さなインスタンス タイプで更新を実行できると判断した場合にもスケールダウンします。 垂直オートスケールは、ドライバー ノード、ワーカー ノード、またはドライバー ノードとワーカー ノードの両方をスケールアップするかスケールダウンするかを決定します。

全て縦型オートスケールを使用 パイプライン ( Databricks SQLおよびストリーミング テーブルで使用されるパイプラインを含む)。

垂直 オートスケールは、メモリ不足エラーが原因で失敗したパイプライン更新を検出することで機能します。 垂直 オートスケールは、失敗した更新から収集されたメモリ不足データに基づいて、これらの障害が検出された場合に、より大きなインスタンスタイプを割り当てます。 本番運用モードでは、新しいコンピュートリソースを使用した新しい更新が自動的に開始されます。 開発モードでは、新しい更新プログラムを手動で開始するときに、新しいコンピュート リソースが使用されます。

垂直 オートスケールは、割り当てられたインスタンスのメモリが一貫して十分に活用されていないことを検出した場合、インスタンスタイプをスケールダウンして次回のパイプライン更新で使用します。