2016-12-01 10 views
1

現在、いくつかの顧客グループで使用されるSparkクラスターをセットアップ中です.Sparkでのリソース割り当て方法については少し混乱しています。Sparkアプリケーションリソースの要求を上書きする

Sparkクラスタのガバナンスモデルは、各アプリケーションが独自のリソース要件を指定できるため、クラスタ全体を効果的に消費し、他のアプリケーションをブロックするため、やや不足しているようです。

spark.deploy.defaultcoresを使用して、すべての使用可能なコアを誤って要求してしまうアプリケーションを排除することができますが、アプリケーションがspark.cores.maxをそれが実際に得られるべきもの。これは、共有クラスタの実際の問題です。

個々のアプリケーションで指定されたリソース要件を上書きする方法はありますか?

答えて

2

共有クラスター内のSparkは、主にYarnやMesosなどのリソースマネージャの上にSparkアプリケーションを実行するため、問題は発生しません。

糸/メゾスはどちらもリソース管理の面で非常に優れているため、さまざまなグループの糸に独自のキューを作成できます。複数のユーザーのジョブをスケジュールするために作成するキューのスケジューラーアルゴリズムを選択できます。

これ以外にも、sparkで動的リソース割り当てを有効にすることができます。これにより、要件ごとに実行時リソース割り当て/割り当て解除が可能になります。

+0

この洞察をいただきありがとうございます。私たちは現在、スタンドアロンモードを使用しています。私たちが必要以上にスタックを拡張したくないからです(クラスタはSparkに専念する予定です)ので、Spark自体でこれを達成する方法がいくつかあることを期待していました。 Yarn/Mesosは、ユーザーごとに異なるリソース割り当てを許可しているのですか、それとも細分性はありますか?たとえば、同じアカウントを使用して、糸/メゾスのスパークジョブを異なるリソースの「キュー」にサブミットすることは可能ですか? –

関連する問題