私はスタンドアロンのクラスタを作成し、私のアプリケーションを処理する最速の方法を探したかったのです。 私のマシンには12gのRAMがあります。私が試した結果がここにあります。スパークの実行ファイルのメモリ設定
Test A (took 15mins)
1 worker node
spark.executor.memory = 8g
spark.driver.memory = 6g
Test B(took 8mins)
2 worker nodes
spark.executor.memory = 4g
spark.driver.memory = 6g
Test C(took 6mins)
2 worker nodes
spark.executor.memory = 6g
spark.driver.memory = 6g
Test D(took 6mins)
3 worker nodes
spark.executor.memory = 4g
spark.driver.memory = 6g
Test E(took 6mins)
3 worker nodes
spark.executor.memory = 6g
spark.driver.memory = 6g
- 試験Aと比較して、試験Bはちょうど作られたものよりwoker(同じメモリは4×2 = 8を費やす)が、これは、高速アプリケーションを作りました。それはなぜ起こったのですか?
- テストC、D、Eは、それよりもはるかに多くのメモリを消費しようとしました。しかしそれはより速く働いた。メモリのエッジを制限するための設定メモリサイズですか?
- これは、ワーカーノードを追加するだけの速度ではありません。作業者とエグゼキュータのメモリサイズの利益数をどのように知るべきですか?
すぐに質問するたびにクラスタを再起動しましたか?キャッシングが後続のパフォーマンスの向上を改善しているかどうかは疑問です。 –
@charlesgomesが本当に再起動する必要がありますか?実際の測定試行の前に各シナリオを1回または2回実行するとどうなりますか? – mauriciojost
マスターとワーカーは 'bin/spark-class'で始まりました。私はちょうど 'bin/spark-submit'でクラスタを再割り当てしました –