2016-09-08 4 views
0

実行者は、2、5または6の複数のタスクを同時に実行できます。スパークの実行者とタスクの同時実行

Sparkは、同じエグゼキュータで同時に実行するタスクの数(つまり、実行中のエグゼキュータで同時に実行できるタスク数)をどのように把握(または計算)しますか?

実行者が1つのタスクを実行している可能性がありますが、1つ以上のタスクを同じ実行プログラムで同時に実行することができますか?それの基準は何ですか?

実行者のコア数は固定されており、メモリは&です。 Executableで同時に実行できるメモリの数を計算するには、メモリに&コアのSparkタスクが必要であると指定しないでください。

+0

あなたはマルチスレッドのことを聞いたことがありますか?スパークRDDは不変でスレッドセーフです。このhttps://en.wikipedia.org/wiki/Multithreading_(computer_architecture)をお読みください。並列とは、実際にはマルチスレッド環境で動作していると思います –

答えて

2

executor内で並行して実行されるタスクの数=構成されたコアの数。 この番号は、設定によっていつでも変更できます。 executor全体(並列または順次)によって実行されるタスクの合計数は、(分割数を介して)作成されたタスクの合計数とエグゼキュータの数によって異なります。

1つのエグゼキュータで実行されているすべてのタスクは、同じメモリが共有されています。内部では、コアの数だけスレッドを起動します。

0

処理しているRDDの斜めのパーティションが最も大きな問題の1つです。 2-6パーティションに大量のデータがある場合、ネットワーク上のデータシャッフルを減らすために、Sparkはエグゼキュータが自ノードにローカルに存在するデータを処理するよう試みます。したがって、2〜6人のエグゼクティブが長時間働いているのを見ることができ、他のエグゼクティブは数ミリ秒でデータを使って実行されます。

詳しくは、this stackoverflow questionをご覧ください。