次の方法で共有


Microsoft Fabric の Apache Spark のコンカレンシー制限とキューイング

適用対象:✅ Microsoft Fabric のデータ エンジニアリングとデータ サイエンス

Microsoft Fabric では、容量を介したコンピューティング ユニットの割り当てを許可します。これは、特定の時点で使用できる専用のリソース セットです。 容量では、アクティビティを実行したり、出力を生成したりするリソースの機能が定義されます。 アイテムが異なると、一定の時間に消費される容量が異なります。 Microsoft Fabric は、Fabric SKU と試用版を通じて容量を提供します。 詳細については、「 容量とは」を参照してください。

ユーザーは、Azure で Microsoft Fabric の容量を作成するとき、分析ワークロードのサイズに基づいて容量サイズを選びます。 Apache Spark では、ユーザーは SKU の一部として予約される容量ユニットごとに 2 つの Apache Spark 仮想コアを取得します。

1 つの容量ユニット = 2 つの Spark 仮想コア

容量を購入すると、管理者は Microsoft Fabric の容量内にワークスペースを作成できます。 容量に関連付けられている Spark 仮想コアは、これらのワークスペース内で作成されるノートブック、Apache Spark ジョブ定義、レイクハウスなど、Apache Spark ベースのすべての項目間で共有されます。

コンカレンシーの調整とキューイング

Fabric の Spark ではコアベースのスロットリングとキュー処理メカニズムが適用され、ユーザーは購入した Fabric の容量 SKU に基づいてジョブを送信できます。 キューイングのメカニズムは、使用可能なジョブ スロットをチェックし、容量が使用可能になると自動的にジョブを再試行する単純な FIFO ベースのキューです。

ユーザーがノートブックまたは Lakehouse ジョブ (テーブルへの読み込みなど) を送信し、ジョブがすべての Spark 仮想コアを同時に使用しているため容量が最大限に使われているとき、次のエラーが表示されます。

HTTP Response code 430: This Spark job can't be run because you have hit a Spark compute or API rate limit. To run this Spark job, cancel an active Spark job through the Monitoring hub, or choose a larger capacity SKU or try again later.

キューを有効にするとパイプラインジョブ スケジューラSpark ジョブ定義からトリガーされたノートブック ジョブがキューに追加され、容量が使用可能になると自動的に再試行されます。

キューの有効期限は、ジョブの送信 時刻から 24 時間 に設定されます。 この期間が経過すると、ジョブは キューから削除 され、 手動で再送信する必要があります。

Fabric の容量はバーストでも有効になり、購入した Spark 仮想コア数の 3 倍まで消費できるようになります。 このバーストは、より多くのジョブを並列で実行できるようにすることで、コンカレンシーの向上に役立ちます。

バースト係数を使用すると、コンカレンシーのために Spark 仮想コアの合計が増加 し、Spark プールが高いコア数で構成されている場合は、 1 つのジョブで利用できます
つまり、 プール構成 によって、ベース SKU の割り当てだけでなく、ジョブで使用できる最大コア数が決まります。

バースト係数を使用した最大 384 個の Spark 仮想コア数を備えた F64 SKU がある場合は、以下のとおりです。

  • カスタム プールまたはスターター プールは 、最大 384 個の Spark 仮想コアで構成できます。
  • ワークスペース管理者がこのようなプールを作成する場合、 1 つの Spark ジョブ (ノートブック、ジョブ定義、lakehouse ジョブなど) で 384 個の仮想コアをすべて使用できます
  • 例: Medium ノード (それぞれ 8 仮想コア) と 48 個の最大ノード = 384 仮想コアを持つプール。

ヒント

ジョブのパフォーマンスを最大化するには、ワークスペース プールが十分なノード サイズと数で構成されていることを確認します。

Spark 容量の SKU 制限

Fabric の容量 SKU 同等の Power BI SKU Spark 仮想コア バースト係数を使用した最大 Spark 仮想コア数 キューの制限
F2 - 4 20 4
F4 - 8 二十四 4
F8 - 16 48 8
F16 - 32 96 16
F32 - 64 192 32
F64 P1 128 384 64
F128 P2 256 768 128
F256 P3 512 1536 256
F512 P4 1024 3072 512
F1024 - 2048 6144 1024
F2048 - 4096 12288 2048
試用版の容量 P1 128 128 NA

重要

テーブルは、ファブリック容量で実行されている Spark ジョブにのみ適用されます。 自動スケールの課金を有効にすると、Spark ジョブはファブリック容量とは別に実行され、バーストやスムージングが回避されます。 Spark 仮想コアの合計は、自動スケール設定で設定された最大容量ユニットの 2 倍になります。

計算例

  • F64 SKU には、128 個の Spark 仮想コアが用意されています
  • バースト係数が 3 の場合、同時実行では 最大 384 個の Spark 仮想コアが サポートされます。
  • プールが完全な 384 個の仮想コアで構成されている場合、他のジョブが容量を消費していないと仮定すると、 1 つのジョブでそれらすべてを使用できます
  • 例: 128 個の仮想コアを使用する 3 つのジョブがそれぞれ同時に実行できます。または、384 個の仮想コアを使用して 1 つのジョブを実行できます。

ジョブのキューの有効期限は 24 時間で、その後取り消され、ユーザーは実行のために再送信する必要があります。

Fabric の Spark の調整では、任意のジョブベースの制限が適用されず、調整は、購入された Fabric の容量 SKU に許可されているコア数のみに基づいて行われます。 既定では、ジョブの受付はオプティミスティックな受付制御になり、ジョブは最小コア要件に基づいて許可されます。 詳細情報: ジョブの受付と管理

ワークスペースに対して既定のプール (スターター プール) オプションが選択されている場合、次の表に、コンカレンシー ジョブの最大制限を示します。

詳細情報: スターター プールの構成

管理者は、容量で使用可能な最大 Spark 仮想コア (Fabric が同時実行のために提供するバースト係数 3× を含む) を利用するように Apache Spark プールを構成できます。 たとえば、F64 Fabric 容量を持つワークスペース管理者は、次の方法で最大 384 個の Spark 仮想コアを使用するように Spark プール (スターター プールまたはカスタム プール) を構成できます。

スタータープールの最大ノード数を48に設定する(ミディアムノード = 各8仮想コア)。

目的の容量に到達するために、適切なノード数を使用して、より大きなノード (XXLarge = 64 仮想コアなど) を使用してカスタム プールを構成します。

この構成では、1 つの Spark ジョブでバースト容量全体を消費できます。これは、パフォーマンスを優先する大規模なデータ処理に最適です。

新機能: 管理ポータルで容量管理者がジョブ レベルのバーストを制御する権限を持ち、新しい設定でその有効化または無効化を行えるようになりました。

管理ポータルの [→ 容量の設定] → [データ エンジニアリング]/[サイエンス] タブに移動します

新しい "Job-Level バーストを無効にする" スイッチを使用して、1 つの Spark ジョブで使用可能なすべてのバースト容量が消費されないようにします

ジョブ レベルのバーストが無効になっている場合、Spark エンジンは、使用可能なすべての容量 (バースト コアを含む) を単一のジョブで利用できないという強制を行います。 これにより、同時実行ジョブで容量を引き続き使用できるようになり、スループットとマルチユーザーコンカレンシーが向上します。

この機能は、複数のチームとパイプライン間でワークロードのバランスを取る必要があるマルチテナント環境またはコンカレンシーの高い環境で特に便利です。 管理者は、最大ジョブ スループット (バーストが有効) または高いコンカレンシーと公平性 (バーストが無効) に合わせて容量が最適化されているかどうかに基づいて、この設定を調整できます。

バーストが有効になっているシナリオの例 (既定): 大規模なバッチ ノートブック ジョブでは、F64 容量内の 384 個の Spark 仮想コアをすべて使用できます(他のジョブが実行されていない場合)。

バースト機能が無効化されている: ジョブは基本コアの制限 (たとえば F64 の場合は 128 Spark 仮想コア) に制約される可能性があり、他のジョブが同時に開始できる余裕を残します。

ヒント

多様なジョブの種類 (ETL、ML、アドホック) を持つチームの場合、ジョブ レベルのバーストを無効にすると、容量の独占を防ぎ、ジョブキューの遅延を減らすことができます。