リソースの量は、異なるクラスタ・マネージャが異なる割り当てを提供するため、使用されているクラスタ・マネージャによって異なります。
例スタンドアロンモードでは、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
になります。
美しく書かれています。アプリケーションごとにエグゼキュータごとに複数のタスクを開始する方法はありますか?この質問は、自分のクラスタで1つのアプリケーションしか実行していない私のシナリオから来ており、エグゼキュータごとのタスクの理想的な数は2〜3です。 – Suresh