カフカからネットワークを介してデータを読み取るスパークストリーミングアプリケーションがあります。クラスタとKafkaサーバは異なる地理にあることに注意することが重要です。カフカからのスパークストリーミングが遅れてバッチ全体が遅くなる
ジョブを完了するまでの平均時間は約8〜10分です(10分間隔で実行しています)。しかし、特定のバッチでは、ジョブの完了時間が芽を立てます。それが撃ち上げられる量は一般的にはランダムです(20分または50分または1時間になる可能性があります)。掘削すると、すべてのタスクが1つを除いてすべて完了することがわかりました。そのため、ターンアラウンドタイム全体が影響を受けます。例えば、ここでそのようなインスタンスからタスク時間ログである:この場合
他は入力分割が同じであっても非常に迅速に終了したが、タスク6は、54分をとっています。私はこれをネットワークの問題(遅い/詰まったもの)とみなし、この作業を再開すると時間が大幅に節約できたとの意見があります。
sparkは、遅いタスクを別のノードで再起動して最初に完了したタスクの結果を使用できるように制御できますか?あるいは、私が気付いていないこの問題に対するよりよい解決策が存在するのでしょうか?
アプリ内に複数のジョブがある場合、この設定を有効にすると役立ちます。spark.streaming.concurrentJobs – bistaumanga
@bistaumanga複数のジョブを意味しますか?ストリーミングアプリケーションです。各反復ごとに2つのマップ削減を実行します。 – Sohaib
私は同じアプリケーションで、イベントの数を数えたり、いくつかのグループで数えたり、いくつかのキーの平均を計算したりするなど、同じアプリケーションで複数のことをやっていることを意味します...複数のアクションを持つ – bistaumanga