2016-07-12 5 views
1

Sparkでアルゴリズムを書いたとしますが、Nのローカルモードで実行されているデータセットの1 .. Xコアを使用して、その性能を評価できるとします。ランタイムはYノードとデータサイズM >> Nとクラスタ上で実行されている何クラスタでのSparkパフォーマンス/スケーラビリティの予測?

  • :どのようにこれらのような質問に近づくでしょうか?
  • 任意の数のノードを使用して、サイズM >> Nのデータセットの最小ランタイムはどのくらいですか?

明らかに、これは無数の要因の影響を受け、正確な見積りを与えることはほとんど不可能です。しかし、どのように教育された推測を思い付くでしょうか?ローカルモードで実行すると、主にCPU使用率を測定できます。シャッフルでディスク+ネットワークの負荷を考慮する経験則がありますか?クラスタのパフォーマンスをシミュレートする方法さえありますか?

答えて

2

データロードはO(n)と見積もることができます。

アルゴリズムは各段階で推定できます。全体のアルゴリズムはすべてのステージの積算です。各段は異なる量のデータを有し、第1の入力データとの関係を有することに留意されたい。

  • アルゴリズム全体がO(n)ならば、それはO(n)です。
  • アルゴリズム全体がO(n log n)ならば、それはO(n log n)です。
  • 全体アルゴリズムはO(nはを)持っている場合、アルゴリズムはMに合わせて改善する必要がある>> N.

何の巨大なシャッフル/ネットワークがありません

  • を想定十分に速い
  • 各ノードは同じ構成を持ちます
  • 単一ノード上のデータサイズNの合計時間はTです。
  • アルゴリズムはO(N Nログ)T * M/N/X * log(M/N)

    を編集している場合、アルゴリズムはO(N)T * M/N/X

    そして時間である場合、ノードの数は、X

そして時間であります

大きなシャッフルがある場合、帯域幅に関してはO(n)です。余分な時間はdataSize(M)/bandwidthです。

大きなシャッフルがある場合は、アルゴリズムを改善することを検討してください。

+0

これは完全に有効ですが、私はディスク+ネットワークを全く無視しないようにもっと興味を持っていました。大規模なシャッフルがあることを知り、クラスタの帯域幅も知っていたらどうなりますか?並列化のオーバーヘッドを無視すると、並列実行の限界を見積もることはできません。 – bluenote10

+0

ディスクは無視されませんでした。シャッフルがあった場合、私はM/Bandwidthになります。結果として累積される。データセット全体を1回以上シャッフルする必要がある場合は、アルゴリズムを改善することを検討します。 –