2017-03-22 9 views
0

Spark 1.0.1を使用して4つのノード(それぞれ16コア)を持つクラスタがあります。sparkで計算されたパーティション数と同時実行タスク数

私はRDDを再分割しているので、200個のパーティションがあります(並列性を高めることを望みます)。

このRDDで変換(フィルターなど)を行うと、1つの時点で64以上のタスク(4つのノードにまたがるコアの総数)が得られないようです。タスクとは、Application Spark UIの下に表示されるタスクの数を意味します。 spark.default.parallelismを明示的に128に設定しようとしました(私は128のタスクを同時に実行することを望んでいました)、実行中のアプリケーションのアプリケーションUIでこれを確認しましたが、これは効果がありませんでした。おそらく、これは 'フィルタ'で無視され、デフォルトは利用可能なコアの総数です。

私はSparkでかなり新しくて、多分私はちょうど不足しているか、または何か基本的なことを誤解しています。どんな助けもありがとう。

答えて

0

これは正しい動作です。各「コア」は、一度に1つのタスクを正確に実行することができ、各タスクはパーティションに対応します。クラスタに64コアしかない場合は、一度に最大64個のタスクしか実行できません。

ノードごとに複数のワーカーを実行して、エグゼキュータを増やすことができます。これにより、クラスタ内でより多くのコアが得られます。しかし、多くのコアがありますが、各コアは一度に1つのタスクしか実行しません。

詳細については、次のスレッドで確認できます。 How does Spark paralellize slices to tasks/executors/workers?

関連する問題