インスタンスフリートでキャパシティ予約を使用する - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

インスタンスフリートでキャパシティ予約を使用する

キャパシティ予約オプションを使用してオンデマンドインスタンスフリートを起動するには、キャパシティ予約オプションを使用するために必要な追加のサービスロール権限をアタッチします。キャパシティ予約オプションはオンデマンド割り当て戦略と一緒に使用する必要があるため、割り当て戦略に必要なアクセス許可をサービスロールと管理ポリシーに含める必要があります。詳細については、「」を参照してください割り当てストラテジーを使用するために必要なIAM アクセス許可

Amazon EMR は、オープンキャパシティ予約とターゲット容量予約の両方をサポートしています。次のトピックでは、で使用できるインスタンスフリートの設定を示します。RunJobFlowアクションまたはcreate-clusterオンデマンドキャパシティー予約を使用してインスタンスフリートを起動するコマンド。

オープンキャパシティ予約をベストエフォートベースで使用する

クラスターのオンデマンドインスタンスが、アカウントで使用可能なオープンキャパシティー予約(インスタンスタイプ、プラットフォーム、テナンシー、アベイラビリティーゾーン)の属性と一致する場合、キャパシティ予約は自動的に適用されます。ただし、定員予約が使用されるかどうかは保証されません。クラスターをプロビジョニングするために、Amazon EMR は起動リクエストで指定されたすべてのインスタンスプールを評価し、リクエストされたすべてのコアノードを起動するのに十分な容量を持つ最低価格のインスタンスプールを使用します。インスタンスプールに一致する使用可能なオープンキャパシティー予約が自動的に適用されます。利用可能なオープンキャパシティ予約がインスタンスプールと一致しない場合、それらは未使用のままです。

コアノードがプロビジョニングされると、アベイラビリティーゾーンが選択され、修正されます。Amazon EMR は、すべてのタスクノードがプロビジョニングされるまで、選択したアベイラビリティーゾーンで、最も価格の低いものからインスタンスプールにタスクノードをプロビジョニングします。インスタンスプールに一致する使用可能なオープンキャパシティー予約が自動的に適用されます。

ベストエフォートベースでオープンキャパシティ予約を使用するための Amazon EMR キャパシティ割り当てロジックのユースケースを次に示します。

例 1: 起動リクエストの最低価格のインスタンスプールには、オープンキャパシティーの予約が利用可能です

この場合、Amazon EMR はオンデマンドインスタンスを使用して最低価格のインスタンスプールで容量を起動します。そのインスタンスプールで利用可能なオープンキャパシティー予約は自動的に使用されます。

On-Demand Strategy lowest-price
Requested Capacity 100
Instance Type c5.xlarge m5.xlarge r5.xlarge
Available Open capacity reservations 150 100 100
On-Demand Price $ $$ $$$
プロビジョニングされたインスタンス 100 - -
オープンキャパシティ予約が使用されました 100 - -
利用可能なオープンキャパシティー予約 50 100 100

インスタンスフリートの起動後、describe-capacity-reservationsを使用して、未使用のキャパシティ予約がいくつ残っているかを確認します。

例 2: 起動リクエストの最低価格のインスタンスプールには、利用可能なオープンキャパシティーの予約がありません

この場合、Amazon EMR はオンデマンドインスタンスを使用して最低価格のインスタンスプールで容量を起動します。ただし、オープンキャパシティーの予約は未使用のままです。

On-Demand Strategy lowest-price
Requested Capacity 100
Instance Type c5.xlarge m5.xlarge r5.xlarge

利用可能なオープンキャパシティー予約

- - 100
On-Demand Price $ $$ $$$
プロビジョニングされたインスタンス 100 - -
オープンキャパシティ予約が使用されました - - -
利用可能なオープンキャパシティー予約 - - 100

ベストエフォートベースでオープンキャパシティ予約を使用するようにインスタンスフリートを構成する

を使用する場合RunJobFlowインスタンスフリートベースのクラスターを作成するアクション。オンデマンド割り当て戦略をlowest-priceおよびCapacityReservationPreferenceキャパシティ予約オプションについてはopen。または、このフィールドを空白のままにすると、Amazon EMR はオンデマンドインスタンスのキャパシティ予約プリファレンスのデフォルトをopen

"LaunchSpecifications": {"OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "CapacityReservationPreference": "open" } } }

Amazon EMR CLI を使用して、オープンキャパシティ予約を使用してインスタンスフリートベースのクラスターを作成することもできます。

aws Amazon EMR create-cluster \ --name "open-ODCR-cluster" \ --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=c4.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=100,InstanceTypeConfigs=['{InstanceType=c5.xlarge},{InstanceType=m5.xlarge},{InstanceType=r5.xlarge}'],\ LaunchSpecifications={OnDemandSpecification='{AllocationStrategy=lowest-price,CapacityReservationOptions={CapacityReservationPreference=open}}'}

各パラメータの意味は次のとおりです。

  • open-ODCR-clusterは、オープンキャパシティー予約を使用してクラスターの名前に置き換えられます。

  • subnet-22XXXX01がサブネット ID に置き換えられます。

オープンキャパシティ予約を最初に使用する

Amazon EMR クラスターのプロビジョニング中に、最低価格の割り当て戦略を上書きし、利用可能なオープンキャパシティ予約を使用して優先順位を付けることができます。この場合、Amazon EMR は、起動リクエストで指定されたキャパシティー予約を持つすべてのインスタンスプールを評価し、リクエストされたすべてのコアノードを起動するのに十分な容量を持つ最低価格のインスタンスプールを使用します。キャパシティ予約が設定されたインスタンスプールに、リクエストされたコアノードに十分な容量がない場合、Amazon EMR は前のトピックで説明したベストエフォート型のケースにフォールバックします。つまり、Amazon EMR は、起動リクエストで指定されたすべてのインスタンスプールを再評価し、リクエストされたすべてのコアノードを起動するのに十分な容量を持つ最低価格のインスタンスプールを使用します。インスタンスプールに一致する使用可能なオープンキャパシティー予約が自動的に適用されます。利用可能なオープンキャパシティ予約がインスタンスプールと一致しない場合、それらは未使用のままです。

コアノードがプロビジョニングされると、アベイラビリティーゾーンが選択され、修正されます。Amazon EMR は、すべてのタスクノードがプロビジョニングされるまで、選択したアベイラビリティーゾーン内の最低価格のものから始めて、容量予約のインスタンスプールにタスクノードをプロビジョニングします。Amazon EMR は、選択したアベイラビリティーゾーン内の各インスタンスプールで利用可能なオープンキャパシティ予約を最初に使用し、必要な場合のみ、最低価格戦略を使用して残りのタスクノードをプロビジョニングします。

オープンキャパシティ予約を最初に使用するための Amazon EMR キャパシティ割り当てロジックのユースケースを次に示します。

例 1: 起動リクエストで利用可能なオープンキャパシティー予約を持つインスタンスプールには、コアノードに十分な容量があります

この場合、Amazon EMR は、インスタンスプールの価格に関係なく、利用可能なオープンキャパシティー予約を使用して、インスタンスプールでキャパシティを起動します。その結果、すべてのコアノードがプロビジョニングされるまで、可能な限りオープンキャパシティ予約が使用されます。

On-Demand Strategy lowest-price
Requested Capacity 100
Usage Strategy use-capacity-reservations-first
Instance Type c5.xlarge m5.xlarge r5.xlarge
Available Open capacity reservations - - 150
On-Demand Price $ $$ $$$
プロビジョニングされたインスタンス - - 100
オープンキャパシティ予約が使用されました - - 100
利用可能なオープンキャパシティー予約 - - 50

例 2: 起動リクエストで利用可能なオープンキャパシティー予約を持つインスタンスプールには、コアノード用の十分な容量がありません

この場合、Amazon EMR は、キャパシティ予約を使用するベストエフォートで最低価格戦略を使用してコアノードを起動することにフォールバックします。

On-Demand Strategy lowest-price
Requested Capacity 100
Usage Strategy use-capacity-reservations-first
Instance Type c5.xlarge m5.xlarge r5.xlarge
Available Open capacity reservations 10 50 50
On-Demand Price $ $$ $$$
プロビジョニングされたインスタンス 100 - -
オープンキャパシティ予約が使用されました 10 - -
利用可能なオープンキャパシティー予約 - 50 50

インスタンスフリートの起動後、describe-capacity-reservationsを使用して、未使用のキャパシティ予約がいくつ残っているかを確認します。

オープンキャパシティ予約を最初に使用するようにインスタンスフリートを設定する

を使用する場合RunJobFlowインスタンスフリートベースのクラスターを作成するアクション。オンデマンド割り当て戦略をlowest-priceおよびUsageStrategyforCapacityReservationOptionsuse-capacity-reservations-first

"LaunchSpecifications": {"OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first" } } }

Amazon EMR CLI を使用して、最初にキャパシティ予約を使用してインスタンスフリートベースのクラスターを作成することもできます。

aws Amazon EMR create-cluster \ --name "use-CR-first-cluster" \ --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=c4.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=100,InstanceTypeConfigs=['{InstanceType=c5.xlarge},{InstanceType=m5.xlarge},{InstanceType=r5.xlarge}'],\ LaunchSpecifications={OnDemandSpecification='{AllocationStrategy=lowest-price,CapacityReservationOptions={UsageStrategy=use-capacity-reservations-first}}'}

各パラメータの意味は次のとおりです。

  • use-CR-first-clusterは、オープンキャパシティー予約を使用してクラスターの名前に置き換えられます。

  • subnet-22XXXX01がサブネット ID に置き換えられます。

ターゲット容量予約を最初に使用する

Amazon EMR クラスターをプロビジョニングするときに、最低価格の割り当て戦略を上書きし、最初に利用可能なターゲットキャパシティ予約を使用して優先順位を付けることができます。この場合、Amazon EMR は、起動リクエストで指定されたターゲットキャパシティー予約を持つすべてのインスタンスプールを評価し、リクエストされたすべてのコアノードを起動するのに十分な容量を持つ最低価格のインスタンスプールを選択します。ターゲット容量予約のインスタンスプールにコアノードに十分な容量がない場合、Amazon EMR は前述のベストエフォート型ケースにフォールバックします。つまり、Amazon EMR は、起動リクエストで指定されたすべてのインスタンスプールを再評価し、リクエストされたすべてのコアノードを起動するのに十分な容量を持つ最低価格のインスタンスプールを選択します。インスタンスプールに一致する利用可能なオープンキャパシティー予約が自動的に適用されます。ただし、対象のキャパシティ予約は未使用のままです。

コアノードがプロビジョニングされると、アベイラビリティーゾーンが選択され、修正されます。Amazon EMR は、選択したアベイラビリティーゾーンで、すべてのタスクノードがプロビジョニングされるまで、最初に最低価格のものからターゲット容量予約を持つインスタンスプールにタスクノードをプロビジョニングします。Amazon EMR は、選択したアベイラビリティーゾーン内の各インスタンスプールで使用可能なターゲットキャパシティー予約を最初に使用しようとします。次に、必要な場合にのみ、Amazon EMR は最低価格戦略を使用して、残りのタスクノードをプロビジョニングします。

ターゲットキャパシティ予約を最初に使用するための Amazon EMR キャパシティ割り当てロジックのユースケースを次に示します。

例 1: 起動リクエストで使用可能なターゲットキャパシティー予約を持つインスタンスプールには、コアノードに十分な容量があります。

この場合、Amazon EMR は、インスタンスプールの価格に関係なく、利用可能なターゲットキャパシティー予約を使用して、インスタンスプールでキャパシティを起動します。その結果、すべてのコアノードがプロビジョニングされるまで、可能な限りターゲットキャパシティ予約が使用されます。

On-Demand Strategy lowest-price
Usage Strategy use-capacity-reservations-first
Requested Capacity 100
Instance Type c5.xlarge m5.xlarge r5.xlarge
Available targeted capacity reservations - - 150
On-Demand Price $ $$ $$$
プロビジョニングされたインスタンス - - 100
ターゲット容量予約が使用されました - - 100
利用可能なターゲットキャパシティ予約 - - 50

例 2: 起動リクエストで使用可能なターゲットキャパシティー予約を持つインスタンスプールには、コアノード用の十分な容量がありません

On-Demand Strategy lowest-price
Requested Capacity 100
Usage Strategy use-capacity-reservations-first
Instance Type c5.xlarge m5.xlarge r5.xlarge
Available targeted capacity reservations 10 50 50
On-Demand Price $ $$ $$$
プロビジョニングされたインスタンス 100 - -
ターゲット容量予約使用済み - - -
利用可能なターゲットキャパシティ予約 10 50 50

インスタンスフリートの起動後、describe-capacity-reservationsを使用して、未使用のキャパシティ予約がいくつ残っているかを確認します。

ターゲットキャパシティ予約を最初に使用するようにインスタンスフリートを設定する

を使用する場合RunJobFlowインスタンスフリートベースのクラスターを作成するアクション、オンデマンド割り当て戦略をlowest-price,UsageStrategyforCapacityReservationOptionsuse-capacity-reservations-first, およびCapacityReservationResourceGroupArnforCapacityReservationOptions<your resource group ARN>。詳細については、「」を参照してください。キャパシティーの予約の処理Linux インスタンス用 Amazon EC2 ユーザーガイド

"LaunchSpecifications": {"OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first", "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup" } } }

各パラメータの意味は次のとおりです。arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroupは、リソースグループ ARN に置き換えられます。

Amazon EMR CLI を使用して、ターゲットキャパシティ予約を使用してインスタンスフリートベースのクラスターを作成することもできます。

aws Amazon EMR create-cluster \ --name "targeted-CR-cluster" \ --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=c4.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=100,InstanceTypeConfigs=['{InstanceType=c5.xlarge},{InstanceType=m5.xlarge},{InstanceType=r5.xlarge}'],\ LaunchSpecifications={OnDemandSpecification='{AllocationStrategy=lowest-price,CapacityReservationOptions={UsageStrategy=use-capacity-reservations-first,CapacityReservationResourceGroupArn=arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup}}'}

各パラメータの意味は次のとおりです。

  • targeted-CR-clusterは、ターゲットキャパシティー予約を使用してクラスターの名前に置き換えられます。

  • subnet-22XXXX01がサブネット ID に置き換えられます。

  • arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroupは、リソースグループ ARN に置き換えられます。

利用可能なオープンキャパシティー予約の使用を避ける

Amazon EMR クラスターの起動時にオープンキャパシティーの予約が予期せず使用されないようにするには、オンデマンド割り当て戦略をlowest-priceおよびCapacityReservationPreferenceforCapacityReservationOptionsnone。それ以外の場合、Amazon EMR はオンデマンドインスタンスのキャパシティ予約プリファレンスのデフォルトをopenを使用して、利用可能なオープンキャパシティー予約をベストエフォートベースで使用しようとします。

"LaunchSpecifications": {"OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "CapacityReservationPreference": "none" } } }

Amazon EMR CLI を使用して、オープンキャパシティの予約を使用せずにインスタンスフリートベースのクラスターを作成することもできます。

aws Amazon EMR create-cluster \ --name "none-CR-cluster" \ --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=c4.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=100,InstanceTypeConfigs=['{InstanceType=c5.xlarge},{InstanceType=m5.xlarge},{InstanceType=r5.xlarge}'],\ LaunchSpecifications={OnDemandSpecification='{AllocationStrategy=lowest-price,CapacityReservationOptions={CapacityReservationPreference=none}}'}

各パラメータの意味は次のとおりです。

  • none-CR-clusterは、オープンキャパシティ予約を使用していないクラスターの名前に置き換えられます。

  • subnet-22XXXX01がサブネット ID に置き換えられます。

キャパシティ予約を使用するシナリオ

次のシナリオでは、キャパシティ予約を使用することでメリットが得られます。

シナリオ 1: キャパシティ予約を使用して長時間稼働するクラスターをローテーションする

長時間稼働するクラスターをローテーションする場合、プロビジョニングする新しいインスタンスのインスタンスタイプとアベイラビリティーゾーンに厳しい要件がある場合があります。キャパシティ予約では、キャパシティ保証を使用して、中断することなくクラスターのローテーションを完了できます。


						使用可能なキャパシティ予約を使用したクラスターローテーション

シナリオ 2: キャパシティ予約を使用して、短命のクラスターを連続してプロビジョニングする

また、キャパシティ予約を使用して、個々のワークロードに対して連続する短期間のクラスタのグループをプロビジョニングして、クラスタを終了するときに次のクラスタがキャパシティ予約を使用できるようにすることもできます。ターゲットキャパシティ予約を使用して、目的のクラスタだけがキャパシティ予約を使用するようにすることができます。


						使用可能なキャパシティ予約を使用する短期間のクラスタプロビジョニング