Spark動的割当ておよびSpark構造化ストリーミング

Spark動的割当て機能は、Sparkおよびそのソース・コードの一部です。データ・フローはSparkからのシグナルをモニタリングし、リソースの請求を適切に行い、スケジューリングすることで、このアルゴリズムの機能をサポートします。

Sparkには、動的割当ての実装が複数あります:
  • 公式アルゴリズムである spark.dynamicAllocationに記載されています。バッチ・ジョブ用に設計されていますが、このアルゴリズムは、バッチおよびSpark構造化ストリーミングと互換性があります。Sparkストリーミングと互換性がありません。
  • spark.streaming.dynamicAllocationで、これは非公式です。この動的割当てはSparkストリーミング用に設計されています。spark.streaming.dynamicAllocationを使用する場合は、spark.dynamicAllocationを無効にしてください。
  • Spark構造化ストリーミング用に、特別に設計された実装はありません。Spark機能リクエストは、SPARK-24815です。

spark.dynamicAllocation.enabledはSpark Structured Streamingで使用できますが、ジョブ・パターンのストリーミング用に設計されておらず、特定のアプリケーションに対して適切に機能しません。spark.dynamicAllocation.enabledはジョブ・キューをモニターし、キューに基づいてスケーリングの決定を行いますが、ストリーミングの性質(トリガー・ケイデンス、タスク・ケイデンス、平均タスク実行時間など)は考慮しません。規則性なく過剰な割当てが行われたり、割当てが解除されたりする可能性があります。spark.dynamicAllocationのタイムアウト値を調整すると、ストリーミング・アプリケーション用にチューニングできます。

spark.dynamicAllocation実装の詳細は、ソース・コードのコメントを参照してください。

この記事は役に立ちましたか。