キャパシティースケジューラーは、Apache YARN に組み込まれたスケジューラーです。 E-MapReduce (EMR) にデプロイされた YARN サービスは、デフォルトのスケジューラーとしてキャパシティースケジューラーを使用します。 キャパシティースケジューラーは、マルチテナントの階層型リソーススケジューラーです。 個々の子キューで使用されるリソースは、設定されたキャパシティーに基づいて割り当てられます。

キャパシティースケジューラーの有効化

重要 [リソースキューの有効化] をオンにした後、YARN サービスページの [サービスの設定] セクションにある [キャパシティースケジューラー] タブでデータを設定できなくなります。 既存の設定は、 [クラスターリソース] ページに同期されます。 YARN サービスページの [構成] タブでクラスターリソースを構成する場合、[クラスタリソース] ページで [リソースキューの有効化] をオフにします。



  1. 表示される [クラスターの概要] ページの左側のナビゲーションウィンドウで、 [クラスタリソース] をクリックします。
  2. 表示される [クラスターリソース] ページで、[リソースキューを有効化] をオンにします。
  3. [保存] をクリックします。
    キャパシティースケジューラーが有効です。

キャパシティースケジューラーの設定

[リソースキューの有効化] をオンにした後、次の手順に沿ってキャパシティースケジューラーを構成します。

  1. [クラスターリソース] ページで、右上隅の [キューの設定] をクリックします。
  2. [キューの設定] タブで、対象のキューを見つけて、[アクション] 列の [編集] をクリックします。

    [アクション] 列の [その他] ドロップダウンリストから [子キューの作成] を選択して、子キューを作成します。

    [root] はレベル 1 のキューです。 これは、すべての他のキューの親キューであり、YARN のすべてのリソースを管理します。 デフォルトで、root キュー配下ではdefault キューのみが使用できます。

    重要
    • 同じ親キュー配下の同じレベルのすべての子キューのキャパシティーの合計値は 100 である必要があります。 たとえば、default と department の2 つの子キューは、ルートキューの配下で使用できます。 これら 2 つの子キューに設定されたキャパシティーの合計値は 100 である必要があります。 department キューの配下で子キューの market と dev キューを使用できます。 これら 2 つの子キューのキャパシティーの合計値は 100 である必要があります。
    • アプリケーションの実行中にキューを指定しない場合、ジョブは default キューに送信されます。
    • root 配下にレベル 2 のキューを作成する場合、 [デプロイ] をクリックできます。 ResourceManager を再起動する必要はありません。
    • root 配下にレベル 3 のキューを作成または設定した場合、ResourceManager を再起動する必要があります。
    • キューの名前を変更した後は、ResourceManager を再起動する必要があります。

スケジューラータイプの切り替え

[リソースキューを有効化] をオンにした後、スケジューラーの種類を切り替えるには、次の手順を実行します。

  1. [クラスターリソース] ページで、右上隅の [スケジューラーを選択] をクリックします。
  2. 必要なスケジューラーを選択します。
  3. [保存] をクリックします。
  4. 右上隅から [アクション] ドロップダウンリストから [RestartResourceManager] を選択します。
  5. 表示される [クラスターアクティビティー] ダイアログボックスで、パラメーターを指定し、[OK] をクリックします。
  6. 表示される [確認] ダイアログボックスで、[OK] をクリックします。
    完了メッセージが表示されたら、スケジューラータイプが切り替わります。

ジョブの送信

  • アプリケーションの実行中にキューを指定しない場合、ジョブは default キューに送信されます。
  • 子キューを指定する必要があります。 タスクは親キューに送信できません。
  • [mapreduce.job.queuename] を使用して、ジョブを送信するキューを指定します。 例:
    `hadoop jar /usr/lib/hadoop-current/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar pi -Dmapreduce.job.queuename=test  2 2`