注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Foundry Streaming は、新しいメッセージの受信を常に待ち受け、ユーザー定義のロジックを適用し、それらをパイプラインの次のステージにプッシュする、高スループット、低レイテンシのコンピュート形式です。
Foundry のストリームは、分散並列ワーカーベースのアーキテクチャに依存しており、並列ワーカーはそれぞれが特定のストリーミングジョブに専用のリソースを持っています。ストリームのリソース要件は、アクティブなストリームの最大スループットとそれが処理するメッセージの総数に応じてスケールします。
ストリーミングコンピュートの使用量は、次の2つのタイプに分けられます:
ライブ処理コンピュート: ライブデータに対してユーザー定義のトランスフォームを実行するプロセス。このソースタイプは「ストリーミング」と呼ばれます。
アーカイブコンピュート: データをストリーミングレイヤーから Foundry のストレージレイヤーに移動するプロセス。アーカイブコンピュートはバッチプロセスであり、「トランスフォーム」として表示されます。
Foundry の使用料を支払う際には、デフォルトの streaming_usage_rate
は 0.5
です。これは、ユーザー定義のトランスフォームがライブデータで実行されるレートです。Palantir とエンタープライズ契約を結んでいる場合は、コンピュート使用量の計算を進める前に、Palantir の担当者に連絡してください。
Foundry のストリームのライブ処理コンピュートは、その全期間で使用するコンピュート秒数によって実時間で測定されます。したがって、ストリーミングジョブでより多くの計算リソース(例:vCPUs、メモリー、並列化)を使用すると、ジョブのコストが上昇します。ジョブが長く実行されるほど、それが使用するコンピュートは多くなります。ストリームは、データを継続的に処理するために継続的に実行するように設計されているため、ユーザーによって終了されるまでコンピュートを使用し続けます。
ストリームは静的に割り当てられています。ストリームが実行中である間、コンピュート秒数は実時間の秒数ごとに一定の数値を使用します。ストリームは、ピークの需要を満たすように調整されることも多いため、ストリームからのコンピュート使用量は、データボリュームの変動に影響されません。データがストリームを通過していない場合でも、ストリームはコンピュート秒数を使用します。
ストリームの使用量は、単一のジョブマネージャーと多数のタスクマネージャーが使用した総秒数の合計として計算することができます。各並列ワーカーは、同一の計算リソースを持つことに注意してください。
ジョブマネージャーのコンピュート秒数は、次のように計算されます:
max(num_vCPU, gib_ram / 7.5) * streaming_usage_rate * stream_duration_seconds
タスクマネージャーのコンピュート秒数は、次のように計算されます:
max(num_vCPU, gib_ram / 7.5) * streaming_usage_rate * stream_duration_seconds * (num_parallel_task_managers + 1)
compute_seconds = job_manager compute_seconds + task_manager_compute_seconds
コンピュート使用量を計算するために使用される値について詳しくは、memory-to-core ratio を参照してください。
アーカイブジョブは、各ストリームと並行して実行されるバッチ処理ジョブです。アーカイブジョブは、ストリームのホットストレージレイヤーから定期的に読み取り、データを Foundry のストレージに移動して、堅牢な持続性と履歴の追跡を提供します。アーカイブジョブはストリームそのものと同じ低レイテンシの要件を持っていないため、スケジュールに従って実行され、アーカイブするデータが存在するときだけコンピュートを使用します。
アーカイブジョブの使用量は、単一の Spark ドライバに基づいており、次の式で計算することができます:
compute_seconds = max(num_vcpu, gib_ram / 7.5) * num_seconds
ストリームの総使用量を表示するには、まず Resource Management application に移動します。次に、Usage by resource セクションでストリームを見つけ、Details を選択して、個々のデータセットごとの使用量を表示します。
ストリームのコストは、ストリームが生成するチェックポイントデータセットに帰属します。このデータセットは、そのストリームの処理の永続的な使用記録として機能します。このデータセットのストリーミング使用量は、Resource Management アプリケーションの「ストリーミング」カテゴリーに含まれます。
ストリームが実行されるたびに、それはユーザーによって停止されるまで継続的に実行されます。ユーザーがストリームを停止すると、その実行はデータセットの History タブの下に表示されます。各個のストリームのプロファイルを調査して、過去のストリーム実行のパフォーマンスとコンピュート使用量を理解することができます。
歴史的なアーカイブが実行されるたびに、それはそのコンピュート指標を Builds application で公開します。Builds アプリケーションを使用して、実行された各アーカイブのリソース割り当てを調査します。
ストリームの使用量の主要な要因は、ストリーム自体の計算リソースフットプリントです。この場合、コンピュートリソースには、タスクマネージャーごとの vCPUs の数、パーティションごとの GiB の RAM、およびストリーム内のパーティションの数が含まれます。これらのリソースはストリームのプロファイルで設定され、ストリームの期間全体で持続します。
特定のワークフローに対してストリーミングを選択するときとバッチを選択するときを理解することは重要です。ストリーミングは、秒単位のレイテンシと一定のコンピュートを必要とするワークフローのために設計されています。データが数分ごとに実行できる場合、ストリームと同じ量のデータをプッシュできる小さなマイクロバッチジョブを考慮してみてください。これは、コンピュート秒数のコストを削減し、データレイテンシを大幅に高めます。
次の例は、10分間実行される仮想のストリームのコンピュート使用量がどのように計算されるかを示しています。ほとんどのプロダクションストリームは継続的に実行されることに注意してください。
ストリームプロファイル
計算
このストリームが10分間実行されるための総コンピュート使用量は、150のジョブマネージャーコンピュート秒数と450のタスクマネージャーコンピュート秒数です。Foundry でのコンピュート使用量に影響を与える要因について詳しく学びましょう。