2017-03-29 4 views
5

hadoopクラスタでYARNアプリケーションの並列実行を無効にする必要があります。現在、YARNにはデフォルト設定があるため、いくつかのジョブを並行して実行できます。私は両方のジョブが遅く実行されるため、これの利点はありません。YARNで独占FIFOアプリケーションキューを構成する方法は?

この設定はアプリケーションの最大数を制限するyarn.scheduler.capacity.maximum-applicationsですが、(docsに記載されているように)送信済みアプリと実行中アプリの両方に影響します。現在実行中のアプリケーションが終了しない限り、送信済みのアプリケーションをキューに入れておきたい。これはどうすればできますか?

+0

がどのように多くの異なるユーザのジョブを提出することでしょうか? – franklinsijo

+1

@franklinsijo 2人または3人のユーザー、同時に最大3つのジョブを提出しました – AdamSkywalker

答えて

1

あなたの質問についての私の理解通りです。私は、上記のコード行/設定があなたに役立つことはありません参照してください。あなたの既存のセットアップで以下のコードをチェックできますか、それはあなたにいくつかの解決策を与えるかもしれません。

<allocations> 
    <defaultQueueSchedulingPolicy>fair</defaultQueueSchedulingPolicy> 

    <queue name="<<Your Queue Name>>" 
    <weight>40</weight> 
    <schedulingPolicy>fifo</schedulingPolicy> 
    </queue> 

    <queue name=<<Your Queue Name>>> 
    <weight>60</weight> 
    <queue name=<<Your Queue Name>> /> 
    <queue name=<<Your Queue Name>> /> 
    </queue> 

    <queuePlacementPolicy> 
    <rule name="specified" create="false" /> 
    <rule name="primaryGroup" create="false" /> 
    <rule name="default" queue=<<Your Queue Name>> /> 
    </queuePlacementPolicy> 
</allocations> 
+0

これらの設定を見つけたリンクを教えてください。どのように動作するのか説明はありません。私は盲目的にそれらをクラスターに押し込むことはできません。 – AdamSkywalker

+0

Adam、ここのリンク:https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/FairScheduler html - 私は本を参照しています:Hadoop:The Definitive Guide、Tom Whiteの第4版。 Chapter-4 –

2

1)変更スケジューラFairSchedulerから

Hadoopの分布は(ClouderaのデフォルトのスケジューラとしてFairSchedulerを使用して)デフォルトでCapacitySchedulerを使用します。

フェアスケジューラは、ユーザーごとにキューを作成defaultキューを設定しyarn-site.xml

<property> 
    <name>yarn.resourcemanager.scheduler.class</name> 
    <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value> 
</property> 

2)にこのプロパティを追加します。すなわち、3人の異なるユーザがジョブをサブミットした場合、3つの個々のキューが作成され、リソースは3つのキュー間で共有される。これは、すべてのジョブが単一defaultキューに入ることを保証するyarn-site.xml

<property> 
    <name>yarn.scheduler.fair.user-as-default-queue</name> 
    <value>false</value> 
</property> 

でこのプロパティを追加することによって、それを無効にします。

3)次に、ジョブキューが1つのdefaultキューに限定されていることを最大のアプリケーション

を制限します。そのキューで実行できるアプリケーションの最大数を1に制限します。

$HADOOP_CONF_DIRfair-scheduler.xmlという名前のファイルを作成し、また、これらのエントリに

<allocations> 
    <queueMaxAppsDefault>1</queueMaxAppsDefault> 
</allocations> 

を追加し、これらのプロパティを追加した後yarn-site.xml

<property> 
    <name>yarn.scheduler.fair.allocation.file</name> 
    <value>$HADOOP_CONF_DIR/fair-scheduler.xml</value> 
</property> 

再起動YARNサービスでこのプロパティを追加します。複数のアプリケーションを提出するで


ACCEPTED最初アクティブなアプリケーションとみなされ、残りされるアプリケーションは、保留中のアプリケーションのようにキューに入れられます。これらの保留中のアプリケーションは、RUNNINGアプリケーションがFINISHEDになるまで、引き続きACCEPTED状態になります。アクティブなアプリケーションは利用可能なすべてのリソースを利用できます。

参考:Hadoop: Fair Scheduler

+1

素敵な答え、すぐに試してみます – AdamSkywalker

+0

まだ試してみませんでしたが、そのアプローチが正しいと感じています。私はそれを確認するときに答えを受け入れるでしょう。 – AdamSkywalker

+0

よろしくお願いいたします。何か問題がある場合はここにコメントする – franklinsijo

関連する問題