2016-07-17 3 views
1

私はipythonコンソールでpysparkジョブを実行しています。私はスパークマスターをlocal[4]と設定しました。だから私は、Javaプロセスでなければならないドライバ用のコアと、他の3つのコアがそれぞれPythonプロセスを実行することを期待しています。しかし、この私のtopのスクリーンショット、Sparkのコア数よりも多くのPythonプロセスが存在するのはなぜですか?

enter image description here

16個のpythonのプロセスがあるのはなぜ?なぜ3つのpythonプロセスしかないのですか?私が覚えていれば、16はこのサーバー上のコアの総数です。

+0

なぜPythonはJavaプロセスを気にするべきですか? – YOU

+0

@YOU PySparkを理解することに基づいて、Sparkエグゼキュータのコアがタスクを実行する必要がある場合、実際の計算を行うPythonプロセスを起動します。私は 'local [4]'を指定しているので、ドライバのために1つのコアが使用され、他の3つのコアはそれぞれ、タスクを計算するためにpythonプロセスを起動します。 – panc

+0

関連:https://www.youtube.com/watch?v=7ooZ4S7Ay6Y&feature=youtu.be&t=1h30m30s – Kristian

答えて

0

まだ完了していない場合はhereをご覧ください。

それぞれデフォルトで1つのエグゼキュータを持つ4人のワーカーを使用することに決めました。しかし、あるエグゼキュータはいくつかのタスクを実行しており、それぞれのタスクはPythonプロセスです。

トピックに関する優れた説明はhereです。

+0

参照はクラスタモードにのみ関連しているようです。私は1台のコンピュータでローカルモードを使用しています。したがって、複数のスレッドを持つエグゼキュータは1つだけです。私の理解は、各スレッドがPythonを起動してタスクを実行することです。多分私の理解は間違っています。 – panc

+0

@PanChao [ここ](http://spark.apache.org/docs/latest/submitting-applications.html#master-urls)に記載されている「作業スレッド」が混乱していると思います。ワーカーはデフォルトでExecutorであるため、実際には複数のPythonスレッドが生成され、それぞれがTaskを処理します。 – ShuaiYuan

関連する問題