Amazon EMR YARN CapacityScheduler でキューを作成するにはどうすればよいですか?

所要時間2分
0

Amazon EMR Hadoop YARN CapacityScheduler でキューを作成するにはどうすればよいですか?

簡単な説明

EMR クラスターには、デフォルトで 1 つのキューがあります。クラスターにキューを追加して、利用可能なクラスターリソース容量を新しいキューに割り当てることができます。

解決方法

再設定コマンドを作成する

以下の再設定例では、次を実行します。

  • 追加する 2 つのキュー (alpha と beta) を作成する。
  • クラスターのリソース総容量の 30% を新しい各キューに割り当てる。キューを追加してクラスター容量を割り当てるときは、すべてのキューの合計容量が 100 になる必要があります。そのため、以下の再設定例では、デフォルトキューの容量が 40% に減少します。
  • 両方のキューへのフルアクセス (「*」ラベルで指定) を提供する。これは、両方のキューがラベル付けされたコアノードにアクセスすることを可能にします。
  • 特定のキューに送信するには、yarn.scheduler.capacity.queue-mappings パラメータでキューを指定します。このパラメータは、ユーザーと同じ名前を持つキューにユーザーをマップします。親キューの名前は、ユーザーのプライマリグループと同じ名前 (u:user:primary_group.user など) にする必要があります。以下の例では、パラメータが u:hadoop:alpha に設定されています。これは、新しく作成されたキュー、alpha にマップされます。

注意: 各キューのコアラベルへのアクセスのための容量は、キュー自体の容量と一致しています。そのため、コアパーティションは、キュー間において他のクラスターと同じ比率で分割されます。

- Classification: capacity-scheduler
  Properties:
    yarn.scheduler.capacity.root.queues: 'default,alpha,beta'
    yarn.scheduler.capacity.root.default.capacity: '40'
    yarn.scheduler.capacity.root.default.accessible-node-labels.CORE.capacity: '40'
    yarn.scheduler.capacity.root.alpha.capacity: '30'
    yarn.scheduler.capacity.root.alpha.accessible-node-labels: '*'
    yarn.scheduler.capacity.root.alpha.accessible-node-labels.CORE.capacity: '30'
    yarn.scheduler.capacity.root.beta.capacity: '30'
    yarn.scheduler.capacity.root.beta.accessible-node-labels: '*'
    yarn.scheduler.capacity.root.beta.accessible-node-labels.CORE.capacity: '30'
- classification: yarn-site
  properties:
    yarn.scheduler.capacity.queue-mappings: 'u:hadoop:alpha'
  configurations: []

注意: デフォルトのキューマッピング設定を上書きする場合は、yarn.scheduler.capacity.queue-mappings-override.enable パラメータを true に設定します。このパラメータは、デフォルトで false に設定されています。true に設定すると、ユーザーは指定されたキュー以外のキューにジョブを送信できます。詳細については、Hortonworks Docs ウェブサイトの「Enable override of default queue mappings」(デフォルトキューマッピングの上書きを有効にする) を参照してください。

変更を確認する

YARN ResourceManager Web UI にアクセスして、変更が行われたことを確認します。

以下は、Amazon EMR 6.4.0 で送信された Spark ジョブの例で、前述の再設定例が使用されています。

spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --conf spark.driver.memoryOverhead=512 --conf spark.executor.memoryOverhead=512 /usr/lib/spark/examples/jars/spark-examples.jar 100

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/lib/spark/jars/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
...
...
...
22/11/29 07:58:07 INFO Client: Application report for application_1669707794547_0001 (state: ACCEPTED)
22/11/29 07:58:08 INFO Client: Application report for application_1669707794547_0001 (state: RUNNING)

This application application_1669707794547_0001 is submitted to queue "alpha"

関連情報

Apache Hadoop ウェブサイトの「Hadoop: Capacity Scheduler

Configure Hadoop YARN CapacityScheduler on Amazon EMR on Amazon EC2 for multi-tenant heterogeneous workloads (マルチテナントの異種ワークロードのために Amazon EC2 での Amazon EMR で Hadoop YARN CapacityScheduler を設定する)

AWS公式
AWS公式更新しました 1年前