クラスターモードの概要を読みましたが、Sparkスタンドアロンクラスターのさまざまなプロセスと並列処理をまだ理解できません。
ワーカーはJVMプロセスですか?私はを実行したbin\start-slave.sh
ところ、ワーカー(実際にはJVM)が起動されることがわかりました。
上記のリンクのとおり、エグゼキューターは、タスクを実行するワーカーノード上のアプリケーションに対して起動されるプロセスです。executorもJVMです。
これらは私の質問です:
実行者はアプリケーションごとです。では、労働者の役割は何でしょうか?それはエグゼキューターと調整し、結果をドライバーに伝えますか?または、ドライバーはエグゼキューターに直接話しかけますか?もしそうなら、労働者の目的は何ですか?
アプリケーションのエグゼキューターの数を制御するにはどうすればよいですか?
エグゼキューター内でタスクを並行して実行できますか?もしそうなら、どのようにエグゼキューターのスレッド数を設定しますか?
ワーカー、エグゼキューター、エグゼキューターコア(--total-executor-cores)の関係は何ですか?
ノードあたりのワーカー数が増えるとはどういう意味ですか?
更新しました
例を見て理解を深めましょう。
例1: 5つのワーカーノード(各ノードに8つのコアがある)を持つスタンドアロンクラスターデフォルトの設定でアプリケーションを起動したとき。
例2例1と 同じクラスター構成ですが、次の設定でアプリケーションを実行します--executor-cores 10 --total-executor-cores 10。
例3 例1と同じクラスター構成ですが、次の設定でアプリケーションを実行します--executor-cores 10 --total-executor-cores 50。
例4 例1と同じクラスター構成ですが、次の設定でアプリケーションを実行します--executor-cores 50 --total-executor-cores 50。
例5 例1と同じクラスター構成ですが、次の設定でアプリケーションを実行します--executor-cores 50 --total-executor-cores 10。
これらの各例では、エグゼキューターは何人ですか?エグゼキューターあたりのスレッド数は?コアはいくつですか?アプリケーションごとのエグゼキューターの数はどのように決定されますか?それは常に労働者の数と同じですか?