我々はスパークにウィンドウ機能を実装しようとしています。 SparkはKafka(5つのパーティションを持つ)を介してデータを受信しており、処理のためにSpark Java DStreamを使用しています。 kafkaからカンマ区切りのデータをSparkのオブジェクトにマップすると、1秒でスライドする20秒のウィンドウが作成されます。このJava DStreamでは、出力をカウントして出力します(実際には処理を増やしたいが、単純化するためにカウントが適用されます)。処理時間にスパイクが発生するまではすべて正常に機能します。処理時間は1つのタスクを処理するのに約40秒かかり、これをポストすると長いキューが発生します。 クラスタ詳細: - 3ノードクラスタ - それぞれが45個のコア(合計135コア) - 各々が256ギガバイトRAM セットアップをテストした: セットアップ1 - - 5カフカパーティション - 20秒窓、1でスライディング秒 - ノードあたり9エグゼキュータ(合計27のエグゼキュータ) - 各エグゼキュータに10ギガバイトの割り当て セットアップ2 - - 5カフカパーティション - 20秒ウィンドウ、秒 1にスライディング - ノードあたりエグゼキュータ(合計135のエグゼキュータ) - GB T を割り当てます各執行 セットアップ3 O - - 5カフカパーティション - 20秒窓、1秒で摺動 - ノードあたりエグゼキュータ(合計45のエグゼキュータ) - 各エクゼキュータ セットアップ4にギガバイトを割り当てます。 - - 5カフカパーティション - 秒窓、1秒 でスライディング - ノードあたり9つのエグゼキュータ(合計27のエグゼキュータ) - 各エグゼキュータに10ギガバイトの割り当て セットアップ5: - (これは私たちの実際のシナリオである) - カフカパーティションS - 秒ウィンドウは、1秒 でスライディング - ノードあたり9エグゼキュータ(合計27のエグゼキュータ) - 全ての設定では、各執行ウィンドウ機能
10 GBに割り当て、ある時点で、処理時間のあまりを取ります(処理の問題の大半で40秒に近い)。 それには解決策やパラメータ変更の提案がある方が良いでしょう。
データ生成速度は10k /秒である。カフカからのメッセージ。 – kadsank
受信者ベースのアプローチを使用していますか?あなたがレシーバを並列化している場合は、チェックポインティングは物事をかなり遅くするので、それを避けることができれば、私はそれをお勧めします。 Spark-UIはボトルネックについていくつかの洞察を提供します。 spark-lintは、クラスタの使用状況を表示できる別のツールです。 – sparker
私たちは '.createDirectStream'アプローチを使用しています。この中で、カフカパーティションは、消費者を呼び起こすために一対一でマッピングされています。 – kadsank