2016-06-02 3 views
0

Spark(1.6.1)クラスタでは、いくつかのノードが他のノードより多くの物理メモリを持っています。しかしexecutor.memoryでは、各ノードに、したがって各ノードのワーカーに等しく適用される修正値を入れなければなりません。スパークは、より大きなメモリを持つノードのノードワーカーインスタンスをより多く設定します。

ノードの中には2倍のメモリがありますが、それをすべて使用することはできません。 すべて利用可能なメモリhereを利用しようとすると、SPARK_WORKER_INSTANCESを使用して、より多くのメモリを持つノードでノードワーカーの数が増えます。

ノードごとにワーカーインスタンスを設定するにはどうすればよいですか?

答えて

1

あなたは実現可能ではない、あるいは少なくともあなたが考えるべき方法ではないことをしようとしていると思います。 Sparkアプリケーションを作成すると、エグゼキュータが作成されます。エグゼキュータは、ワーカーであり、基本的にJVMです。それらは、ワーカノードの数とサイズから独立しています。例えば。 3つのエグゼキュータに4Gのメモリを要求し、3つのワーカーノードに16Gのメモリがある場合、すべてのエグゼキュータが同じノードでインスタンス化され、これを制御することはできません。

128Gのワーカーノードと32Gのメモリを持つ1つのワーカーノードがある場合、8Gのメモリを持つ20人のエグゼキュータをインスタンス化するだけで、小さなマシンに4つのエグゼキュータを、もう片方。このようにして、すべてのリソースを活用します。

+0

応答をいただきありがとうございます。実行者20人をインスタンス化するには、 'SPARK_EXECUTOR_INSTANCES = 20'ですか? – echo

+0

あなたのspark-submitコマンドで--num-executors 20を渡すことができます – mgaido

関連する問題