2015-01-14 13 views
8

スタティックパーティショニングのドキュメントhttps://spark.apache.org/docs/latest/job-scheduling.htmlのこのページでは、「この方法では、各アプリケーションに最大限のリソースを割り当てることができます」と記載されています。アプリケーションに与えられるSpark Clusterの量を制御するものは何ですか?

私はこれらの最大のリソースは何ですか?私はエグゼキュータ設定ごとにメモリを見つけました(動的パーティション化ではちょうど下に記載されています)。これは、アプリケーションが取得するメモリリソースを制限していると想定しています。しかし、どのように多くのエグゼキュータが起動されているか/クラスタからいくつのノードが使用されているかを決定するもの。クラスタ全体のメモリとコアが「取得」されますか?

別の類似したメモには、ジョブまたはタスクレベルごとに求められるメモリを変更する方法がありますか?

答えて

11

リソースの量は、異なるクラスタ・マネージャが異なる割り当てを提供するため、使用されているクラスタ・マネージャによって異なります。

例スタンドアロンモードでは、Sparkはすべてのノードを使用しようとします。 spark.max.coresは、ジョブがノード全体で取る合計コア数を制御します。設定されていない場合、Sparkはspark.deploy.defaultCoresを使用します。彼らはspark.cores.maxを設定しない場合はスパークのスタンドアロン モードでのアプリケーションに与えるために、コアの

デフォルト番号:spark.deploy.defaultCoresからの文書は、さらにその使用を明確にしています。設定されていない場合、アプリケーション はspark.cores.max を構成しない限り、常に使用可能なすべてのコアを取得します。 のユーザーがデフォルトでクラスタ全体を取得しないように、この値を共有クラスタで低く設定します。

メゾス粗粒度モードでは、Sparkはデフォルトですべての使用可能なコアを割り当てます。ジョブごとにそれを制限するにはspark.max.coresを使用してください。

メゾスファイングレインモードでは、Sparkはジョブによって必要に応じてコアを割り当て、後で解放します。これにより、より高いタスク割り当てオーバーヘッドを犠牲にして公正な使用が保証されます。糸中の

documentationあたり:

スパークYARNクライアントコントロールに--num-執行オプションどのようにそれをクラスタに割り当てます 執行多く、しばらく--executor・メモリと - エグゼキュータ・コアはエグゼキュータごとのリソースを制御します。

メモリに関しては、ジョブまたはタスクごとの合計メモリを設定する方法はなく、実行者ごとにspark.executor.memoryを使用する方法はありません。あなたの仕事に割り当てられたメモリはspark.executor.memory x #executorsになります。

+0

美しく書かれています。アプリケーションごとにエグゼキュータごとに複数のタスクを開始する方法はありますか?この質問は、自分のクラスタで1つのアプリケーションしか実行していない私のシナリオから来ており、エグゼキュータごとのタスクの理想的な数は2〜3です。 – Suresh

関連する問題