たとえば、エグゼキュータの数が40であるにもかかわらず、タスクの数が80であれば、各エグゼキュータは2つのタスクを並行して実行することになります。また、私の関数(タスクが実行する)は通常の関数ではありませんが、私はその中のプログラムを呼び出します。したがって、各タスクは実際に完了するまでに数分かかります。だから、私の質問は、スパークはそれをどのように管理しているのだろうか?これらのタスクはエグゼキュータのJVMを共有しますか?コアの数はどうでしょうか、それは2つのタスクに分けられますか?これらの2つのタスクを同時に実行するのではなく、ラウンドロビン方式で実行する、つまりすべてのエグゼキュータのコアで最初のタスクを実行し、終了したときに2番目のタスクを実行する場合はどうすればよいでしょうか?Spark Executorは複数のタスクをどのように実行しますか?
3
A
答えて
2
これは、リソースをどのように割り当てるか、エグゼキュータにコア数、エグゼキュータごとのコア数、および割り当てられたメモリに依存します。最大の並列性を達成するためのプログラム方法にも依存します。
最大並列性を達成するためにどのようにコードするかによって異なります。 2つのタスクがあり、互いに独立している場合、それらは並行して実行されます。あるタスクが前のタスクの結果に依存する場合、それらは連続して実行されます。
コアの数は、2つのエグゼキュータを作成し、使用可能なコアを割り当てることで2つのタスクに分割できます。
ラウンドロビン方式でタスクを実行するには、パーティション方式を定義し、それに応じてリソースを割り当てる必要があります。これは、各タスクが他のタスクの後に実行されることを保証する。
関連する問題
- 1. Executorサービスは最初のタスクのみを実行します
- 2. Spark DriverのメモリはExecutorリソースにどのように影響しますか?
- 3. マスタノードはSparkで実際のタスクを実行しますか?
- 4. Celeryは実際にどのようにタスクを実行しますか?
- 5. 複数のタスクをグループとして実行するにはどうすればよいですか?
- 6. 複数のSpark ExecutorでZookeeper設定を共有する
- 7. 同じコマンドで複数のタスクを実行しますか?
- 8. 複数のvscodeタスクを同時に実行するにはどうすればよいですか?
- 9. Pythonスレッドの実行はどのように引数を実行しますか?
- 10. spark sqlで複数行のsqlを実行するには
- 11. スパークはどのようにタスクの数を決定しますか?
- 12. rakeタスクからMySQLクエリをどのように実行しますか?
- 13. Apache Spark:MesosClusterDispatcherはexecutorをDockerコンテナで実行できますか?
- 14. Gradleタスクで端末コマンドをどのように実行しますか?
- 15. セロリのタスクを確実にする方法セロリのタスクの実行が重複しないようにする
- 16. Celeryでは、どのようにタスクを実行してから、そのタスクを別のタスクを実行させて、それを続けるのですか?
- 17. はどのように複数の行
- 18. スタンドアローンモードで複数のスパークアプリケーションを異なるワーカーノードで実行するにはどうすればよいですか?
- 19. Java Executorが実行中のタスクを特定の時点で簡単に知る方法はありますか?
- 20. spark-defaults.confのspark。{driver、executor} .memoryとspark-env.shのSPARK_WORKER_MEMORYの違いは何ですか?
- 21. どのように非同期タスクを実行し、返された変数をメインスレッドで使用しますか?
- 22. spark executorのカスタムlog4jアペンダー
- 23. Spark-submit executorメモリの問題
- 24. はどのように複数行
- 25. sparkで複数行の行を扱うには?
- 26. executorキューにタスクを戻す方法はありますか
- 27. Executorサービスのキュー内のタスク数を取得する方法は?
- 28. Spark 2.0の複数インスタンスを一度に(複数のJupyterノートブックで)実行するにはどうすればよいですか?
- 29. どのようにless-plugin-globをgulpのようなタスクで実行しますか?
- 30. 別のタスクからgulpタスクを実行するにはどうすればよいですか?
ラウンドロビン方式でタスクを実行するパーティション分割スキームについて少し詳しく説明できますか? – pythonic
私は、私が出会ったユースケースについて知ることができます。私はデータフレームを使ってデータを保存していました。最初は私は単一のパーティションを持っていたので、完全なパーティションは1つのエグゼキュータで実行され、他のエグゼキュータは使用されませんでした。私は再パーティション機能()を使用してデータフレームを分割しようとしましたが、これらのパーティションはエグゼキュータ間で並行して実行されていました。だから私は2つのエグゼキュータを持っていたときに、それぞれのエグゼキュータは100個のパーティションの周りを処理し、時間を半減させました。実行時に各パーティションは単一のタスクとみなされます。 i executorのために、すべてのタスクが連続して実行されます。 –
実際には、指定するエクステンダコアの数によって異なります。 Sparkは、指定したコアの数と並行して多くのタスクを実行します。したがって、4つのエグゼキュータと4つのエグゼキュータコアがある場合、合計4 x 4 = 16のタスクが並行して実行されます。私が問題を解決するために見つけた1つの方法は、エグゼキュータコアの数を制限することです。その場合、物事はよりラウンドロビン方式で行われます。 – pythonic