私は、任意の時点でジョブの数を制御することによって競合を制御するためにYARNsリソースキューを使用しようとしていました(MRジョブのみ、他のYARNアプリケーションはありません)。私が持っている状況は -YARN:ジョブの並行性の制御
私はユーザーからの要求を受け取り、(MRジョブとして)いくつかのレポートを実行するサービスを持っています。これらのジョブは時には時間がかかり、ピーク時にこれらのジョブがリソースを求めて競合し、共有が多すぎるということは、単一のジョブがうまく進まないことを意味します。私はいつでもキューで実行できるレポートの数を最小限にしようとしています。
キューの実行中のアプリケーションの最大値を希望の値に設定することで、これを行うことができます。今、私はMRアプリケーション/ジョブをクラスタに提出することができ、( 'n'と言う)ジョブはいつでも実行できます。今、問題は、同じキュー内のタスクを先取りする方法がない(または私は1つを知らない)。 1つのジョブがあるときにすべてのキューを占有し、2つのジョブがある場合、最初のジョブのいくつかのタスクが終了し、両方のジョブが等しくなるようにジョブをこのキューにサブミットできるようにしたいリソースをさらに分割するという基本的な方法があります(基本的に、FairShareSchedulerはプリエンプションで動作しますが、複数のキューではなく1つのキュー内で動作します)。
これは可能ですか?私はただ1人のユーザー(私のサービス)が今すぐ仕事を提出するだけです。ユーザーに基づいてサブキューを作成するために、私のサービスのユーザーをクラスタに伝播させることができます(私は好きではありませんが、他には何もできません)。しかし、私は多くのユーザーがいるので、私は望む振る舞いを得る方法を知らないし、キューの名前(ジョブの提出時に作成される)を知らずにキューごとに制限(重み)を設定する方法がわからない。
ご協力いただきありがとうございます。