web-dev-qa-db-ja.com

ワーカー、ワーカーインスタンス、エグゼキューターの関係は何ですか?

Spark Standaloneモードでは、マスターノードとワーカーノードがあります。

ここにいくつかの質問があります:

  1. 2つのワーカーインスタンスは、2つのワーカープロセスを持つ1つのワーカーノードを意味しますか?
  2. すべてのワーカーインスタンスは、特定のアプリケーション(ストレージ、タスクを管理する)のエグゼキューターを保持していますか、または1つのワーカーノードが1つのエグゼキューターを保持していますか?
  3. spark Wordカウントなどのランタイムの方法を説明するフローチャートはありますか?
62
edwardsbean

Spark cluster docs を最初に読むことをお勧めしますが、さらに詳しくは Clouderaブログ投稿 これらのモードについて説明しています。

最初の質問は、「インスタンス」の意味によって異なります。ノードはマシンであり、マシンごとに複数のワーカーを実行する正当な理由はありません。したがって、通常、2つのワーカーノードは、それぞれSpark worker。

ワーカーは、多くのアプリケーションのために、多くのエグゼキューターを保持しています。 1つのアプリケーションに多くのワーカーのエグゼキューターがあります。

3番目の質問は明確ではありません。

48
Sean Owen

他の素晴らしい答えに拡張して、いくつかの画像で説明したいと思います。

Sparkスタンドアロンモードでは、マスターノードとワーカーノードがあります。

スタンドアロンモードのマスターとワーカーの両方を1か所で表す場合。

Spark Standalone mode

Spark= YARNと連携する方法について知りたい場合は、この投稿を確認してください Spark on YARN

1。 2つのワーカーインスタンスは、2つのワーカープロセスを持つ1つのワーカーノードを意味しますか?

一般に、ワーカーインスタンスをスレーブとして呼び出します実行するプロセスspark tasks/jobs。ノードの推奨マッピング(物理マシンまたは仮想マシン)およびワーカーは、

1 Node = 1 Worker process

2。すべてのワーカーインスタンスは特定のアプリケーション(ストレージ、タスクを管理する)のエグゼキューターを保持していますか、または1つのワーカーノードが1つのエグゼキューターを保持していますか?

はい、ワーカーノードは複数のエグゼキューターを保持できます(プロセス)十分なCPU、メモリ、ストレージがある場合

指定された画像のWorkerノードを確認してください。 A Worker node in cluster

ところで、特定の時点でのワーカーノードのエグゼキューターの数は完全にのワークロードに依存しますclusterおよびノードの能力で、executorの数を実行します。

3。 sparkランタイム?を説明するフローチャートはありますか?

Sparkからプログラムのリソースマネージャーを介して将来の見込みがある場合、join two rddsを実行し、いくつかのreduce操作を実行してからfilter

Spark runtime for a sample code

こんにちは

32
mrsrinivas

これは古い質問であり、ショーンの答えは素晴らしいものでした。私の記事は、MrQuestionのコメントのSPARK_WORKER_INSTANCESに関するものです。 MesosまたはYARNをクラスターマネージャーとして使用すると、1人のワーカーで同じマシン上で複数のエグゼキューターを実行できるため、マシンごとに複数のワーカーを実行する必要はありません。ただし、スタンドアロンクラスターマネージャーを使用する場合、現在のところ、各物理マシンのワーカープロセスごとに実行できるエグゼキューターは1つだけです。したがって、超大型マシンがあり、その上で複数の実行者を実行したい場合は、複数のワーカープロセスを開始する必要があります。それが、spark-env.shSPARK_WORKER_INSTANCESの目的です。デフォルト値は1です。この設定を使用する場合は、SPARK_WORKER_CORESを明示的に設定して、ワーカーごとのコアを制限してください。すべてのコアを使用します。

このスタンドアロンのクラスターマネージャーの制限はすぐになくなるはずです。これによると SPARK-1706 、この問題は修正され、Spark 1.4。

30
Lan

Lanが言っていたように、複数のワーカーインスタンスの使用は、スタンドアロンモードでのみ関連します。複数のインスタンスが必要な理由は2つあります。(1)ガベージポーズコレクターが大きなJVMのスループットを低下させる可能性がある(2)32 GBを超えるヒープサイズではCompressedOoopsを使用できない

複数のワーカーインスタンスの設定方法 の詳細をご覧ください。

7
Uli Bethke