Amazon EMRクラスターのインスタンスフリートの計画と設定 - Amazon EMR

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

Amazon EMRクラスターのインスタンスフリートの計画と設定

注記

インスタンスフリート設定は、5.0.0 および 5.0.3 を除く Amazon EMRリリース 4.8.0 以降でのみ使用できます。

Amazon EMRクラスターのインスタンスフリート設定を使用すると、Amazon EC2インスタンスのさまざまなプロビジョニングオプションを選択でき、クラスター内のノードタイプごとに柔軟で柔軟なリソース戦略を開発できます。

インスタンスフリート設定では、各フリート内のオンデマンドインスタンスおよびスポットインスタンスターゲット容量を指定します。クラスターが起動すると、Amazon はターゲットが満たされるまでインスタンスをEMRプロビジョニングします。価格引き上げまたはインスタンスの障害が原因で Amazon が実行中のクラスターでスポットインスタンスEC2を再利用すると、Amazon EMR はインスタンスを指定したインスタンスタイプに置き換えようとします。これにより、スポット料金の急激な増加中に容量を再取得することが容易になります。

Amazon では、フリートごとに最大 5 つの Amazon EC2インスタンスタイプEMRを指定してターゲットを達成できます。または、Amazon AWS CLI または を使用してクラスターを作成する場合、またはオンデマンドEC2インスタンスEMRAPIとスポットインスタンスの割り当て戦略を使用して、フリートごとに最大 30 の Amazon インスタンスタイプを指定できます。

また、異なるアベイラビリティーゾーンに複数のサブネットを選択することもできます。Amazon がクラスターEMRを起動すると、これらのサブネットを調べて、指定したインスタンスと購入オプションを見つけます。Amazon が 1 つ以上のアベイラビリティーゾーンで AWS 大規模なイベントEMRを検出すると、Amazon EMRは影響を受けたアベイラビリティーゾーンからトラフィックをルーティングし、選択に従って代替アベイラビリティーゾーンで作成した新しいクラスターを起動しようとします。クラスターのアベイラビリティーゾーンの選択はクラスターの作成時にのみ行われることに注意してください。アベイラビリティーゾーンが停止しても、既存のクラスターノードは新しいアベイラビリティーゾーンで自動的に再起動されません。

インスタンスフリートの使用に関する考慮事項

Amazon でインスタンスフリートを使用する場合は、次の項目を考慮してくださいEMR。

  • ノードタイプ (プライマリ、コア、タスク) あたり 1 つのみのインスタンスフリートを使用できます。でフリートごとに最大 5 つの Amazon EC2インスタンスタイプを指定できます AWS Management Console (または AWS CLI Amazon EMRAPIと を使用してクラスターを作成する場合、インスタンスフリートごとに最大 30 タイプ)インスタンスフリートの配分戦略

  • Amazon は、スポット購入オプションとオンデマンド購入オプションの両方でプロビジョニングする、指定された Amazon EC2インスタンスタイプのいずれかまたはすべてEMRを選択します。

  • コアフリートとタスクフリートのスポットインスタンスおよびオンデマンドインスタンスのターゲット容量を確立できます。ターゲットにカウントされる各 Amazon EC2インスタンスに割り当てられた vCPU または汎用ユニットを使用します。Amazon は、各ターゲット容量が完全に満たされるまでインスタンスをEMRプロビジョニングします。プライマリフリートの場合、ターゲットは常に 1 つです。

  • 1 つのサブネット (アベイラビリティーゾーン) または範囲を選択できます。範囲を選択すると、Amazon は最適なアベイラビリティーゾーンに容量をEMRプロビジョニングします。

  • スポットインスタンスのターゲット容量を指定するとき、次のことを実行します。

    • インスタンスタイプごとに、最大スポット料金を指定します。Amazon は、スポット価格がスポット価格の上限を下回る場合、スポットインスタンスをEMRプロビジョニングします。お客様にご負担いただくのはスポット料金であり、必ずしも最大スポット料金ではありません。

    • フリートごとにスポットインスタンスをプロビジョニングするためのタイムアウト期間を定義します。Amazon EMRがスポットキャパシティをプロビジョニングできない場合は、代わりにクラスターを終了するか、オンデマンドキャパシティのプロビジョニングに切り替えることができます。これはクラスターのプロビジョニングにのみ適用され、サイズ変更には適用されません。クラスターのサイズ変更プロセス中にタイムアウト期間が終了すると、プロビジョニングされていないスポットリクエストはオンデマンド容量に移行されずに無効になります。

  • フリートごとに、スポットインスタンスに、価格キャパシティ最適化、容量最適化、最低価格 capacity-optimized-prioritized、またはすべてのプールに分散された配分戦略のいずれかを指定できます。

  • フリートごとに、最低料金戦略または優先戦略の、オンデマンドインスタンスに次の配分戦略を適用できます。

  • オンデマンドインスタンスを使用するフリートごとに、キャパシティ予約オプションを適用できます。

  • インスタンスフリートに配分戦略を使用する場合は、EMRクラスターにサブネットを選択するときに以下の考慮事項が適用されます。

    • Amazon がタスクフリートでクラスターをEMRプロビジョニングすると、リクエストされたEMRクラスターのすべてのインスタンスをプロビジョニングするのに十分な使用可能な IP アドレスがないサブネットがフィルタリングされます。これには、クラスターの起動中にプライマリ、コア、タスクインスタンスフリートに必要な IP アドレスが含まれます。EMR 次に、Amazon は割り当て戦略を活用して、インスタンスタイプと十分な IP アドレスを持つ残りのサブネットに基づいてインスタンスプールを決定し、クラスターを起動します。

    • 利用可能な IP アドレスが不足しているため、Amazon がクラスター全体を起動EMRできない場合、必須 (コアおよびプライマリ) インスタンスフリートを起動するのに十分な空き IP アドレスを持つサブネットを識別しようとします。このようなシナリオでは、タスクインスタンスフリートはエラーでクラスターを終了するのではなく、中断状態になります。

    • 指定されたサブネットに必須コアおよびプライマリインスタンスフリートをプロビジョニングするのに十分な IP アドレスが含まれていない場合、クラスターの起動は VALIDATION_ERROR で失敗します。これにより、CRITICAL重要度クラスターの終了イベントがトリガーされ、クラスターを起動できないことが通知されます。この問題を回避するには、サブネット内の IP アドレスの数を増やすことをお勧めします。

  • オンデマンドインスタンスを起動すると、アカウントのプライマリノード、コアノード、タスクノードに対して、オープンまたはターゲットを絞ったキャパシティ予約を使用できます。インスタンスフリートの割り当て戦略を持つオンデマンドインスタンスでは、容量が不足する可能性があります。複数のインスタンスタイプを指定して、容量不足の可能性を分散して減らすことをお勧めします。詳細については、「Amazon のインスタンスフリートでキャパシティ予約を使用する EMR」を参照してください。

インスタンスフリートオプション

次のガイドラインを使用して、インスタンスフリートオプションについて理解してください。

ターゲット容量の設定

コアフリートとタスクフリートのターゲット容量を指定します。その場合、Amazon がEMRプロビジョニングするオンデマンドインスタンスとスポットインスタンスの数を決定します。インスタンスを指定するときは、ターゲットに対してカウントされる各インスタンスの数を決定します。オンデマンドインスタンスがプロビジョニングされると、オンデマンドターゲットに対してカウントされます。スポットインスタンスの場合も同様です。プライマリフリートはコアフリートやタスクフリートとは異なり、常に 1 つのインスタンスです。したがって、このフリートのターゲット容量は常に 1 になります。

コンソールを使用すると、 vCPUs Amazon EC2インスタンスタイプの が、デフォルトでターゲット容量のカウントとして使用されます。これを汎用ユニット に変更し、EC2インスタンスタイプごとにカウントを指定できます。を使用する場合は AWS CLI、インスタンスタイプごとに汎用ユニットを手動で割り当てます。

重要

を使用してインスタンスタイプを選択すると AWS Management Console、各インスタンスタイプに表示される vCPU の数は、そのインスタンスタイプの vcore YARN の数であり、EC2 vCPUs そのインスタンスタイプの の数ではありません。 vCPUs 各インスタンスタイプの の数の詳細については、「Amazon EC2 インスタンスタイプ」を参照してください。

フリートごとに、最大 5 つの Amazon EC2インスタンスタイプを指定します。を使用して AWS CLI または Amazon を使用してクラスターインスタンスフリートの配分戦略を作成する場合API、EC2インスタンスフリートごとに最大 EMR 30 個のインスタンスタイプを指定できます。Amazon は、ターゲット容量を満たすために、これらのEC2インスタンスタイプの任意の組み合わせEMRを選択します。Amazon EMRはターゲット容量を完全に満たそうとしているため、過剰になる可能性があります。例えば、未処理のユニットが 2 つあり、Amazon がインスタンスをプロビジョニングEMRできるのは 5 つのユニットのみですが、インスタンスはプロビジョニングされたままになります。つまり、ターゲット容量が 3 ユニット超過します。

実行中のクラスターのサイズを変更するためにターゲット容量を減らすと、Amazon はアプリケーションタスクを完了EMRしようとし、新しいターゲットを満たすためにインスタンスを終了します。詳細については、「タスクの完了時に終了」を参照してください。

起動オプション

スポットインスタンスでは、フリート内のインスタンスタイプごとに最大スポット料金を指定できます。この料金は、オンデマンド料金のパーセンテージまたは特定の金額として設定できます。Amazon は、アベイラビリティーゾーンの現在のスポット料金が最大スポット料金を下回る場合、スポットインスタンスをEMRプロビジョニングします。お客様にご負担いただくのはスポット料金であり、必ずしも最大スポット料金ではありません。

注記

期間が定義されたスポットインスタンス (スポットブロックとも呼ばれます) は、2021 年 7 月 1 日以降の新規のお客様は、ご利用いただけません。既に、期間が指定されたスポットインスタンスを使用した経験をお持ちのお客様については、2022 年 12 月 31 日まで、この機能を引き続きサポートいたします。

Amazon 5.12.1 EMR 以降では、容量割り当てが最適化されたスポットインスタンスフリートとオンデマンドインスタンスフリートを起動できます。この配分戦略オプションは、古い AWS Management Console または API を使用して設定できますRunJobFlow。新しいコンソールでは配分戦略をカスタマイズできないことに注意してください。配分戦略オプションを使用するには、追加のサービスロールのアクセス許可が必要です。クラスターにデフォルトの Amazon EMRサービスロールと マネージドポリシー (EMR_DefaultRoleAmazonEMRServicePolicy_v2) を使用する場合、割り当て戦略オプションのアクセス許可は既に含まれています。デフォルトの Amazon EMRサービスロールと管理ポリシーを使用していない場合は、このオプションを使用するにはそれらを追加する必要があります。「Amazon のサービスロール EMR (EMR ロール)」を参照してください。

スポットインスタンスの詳細については、「Amazon EC2ユーザーガイド」の「スポットインスタンス」を参照してください。オンデマンドインスタンスの詳細については、Amazon EC2ユーザーガイドの「オンデマンドインスタンス」を参照してください。

最低料金配分戦略を使用してオンデマンドインスタンスフリートを起動する場合は、キャパシティ予約を使用するオプションがあります。キャパシティ予約オプションは、Amazon EMR API を使用して設定できますRunJobFlow。キャパシティ予約では、これらのオプションを使用するためにサービスロールのアクセス許可を追加する必要があります。「配分戦略のアクセス許可」を参照してください。新しいコンソールではキャパシティ予約をカスタマイズできないことに注意してください。

複数サブネット (アベイラビリティーゾーン) オプション

インスタンスフリートを使用する場合、 内で複数の Amazon EC2 サブネットを指定できます。VPCそれぞれが異なるアベイラビリティーゾーンに対応します。EC2-Classic を使用する場合は、アベイラビリティーゾーンを明示的に指定します。Amazon EMRは、フリートの仕様に従ってインスタンスを起動するための最適なアベイラビリティーゾーンを特定します。インスタンスは、1 つのアベイラビリティーゾーンのみで常にプロビジョニングされます。プライベートサブネットまたはパブリックサブネットを選択できますが、この 2 つを混在させることはできません。また、指定したサブネットは同じ 内にある必要がありますVPC。

マスターノードの設定

プライマリインスタンスフリートは単一インスタンスにすぎないため、その構成はコアインスタンスフリートとタスクインスタンスフリートとは多少異なります。プライマリインスタンスフリートは 1 つのみのインスタンスで構成されているため、プライマリインスタンスフリートにはオンデマンドまたはスポットのいずれかを選択します。コンソールを使用してインスタンスフリートを作成する場合、選択する購入オプションのターゲット容量は 1 に設定されます。を使用する場合は AWS CLI、常に TargetSpotCapacityまたは TargetOnDemandCapacityを必要に応じて 1 に設定します。この場合もプライマリインスタンスフリートには、最大 5 つのインスタンスタイプを選択できます (オンデマンドインスタンスまたはスポットインスタンスの配分戦略を使用する場合は、最大 30)。ただし、Amazon が異なるタイプの複数のインスタンスをプロビジョニングEMRする可能性のあるコアインスタンスフリートやタスクインスタンスフリートとは異なり、Amazon はプライマリインスタンスフリート用にプロビジョニングする単一のインスタンスタイプEMRを選択します。

インスタンスフリートの配分戦略

Amazon EMRバージョン 5.12.1 以降では、各クラスターノードのオンデマンドインスタンスとスポットインスタンスで配分戦略オプションを使用できます。、Amazon AWS CLI、APIまたは Amazon EMR EMRコンソールを使用してクラスターを作成する場合、フリートごとに最大 30 個の Amazon EC2インスタンスタイプを指定できます。デフォルトの Amazon EMRクラスターインスタンスフリート設定では、フリートごとに最大 5 つのインスタンスタイプを使用できます。クラスターのプロビジョニングにかかる時間が短縮され、スポットインスタンスの割り当てがより正確になり、スポットインスタンスの中断が低減するように、配分戦略オプションを使用することをお勧めします。

オンデマンドインスタンスの配分戦略

オンデマンドインスタンスでは、次の配分戦略を使用できます。

lowest-price (デフォルト)

最低料金配分戦略は、利用可能な容量を持つ最低料金プールからオンデマンドインスタンスを起動します。低価格プールに利用可能な容量がない場合、オンデマンドインスタンスは、利用可能な容量を持つ次に低価格のプールから取得されます。

prioritized

優先配分戦略を使用すると、インスタンスフリートの各インスタンスタイプに優先度値を指定できます。Amazon は、優先度が最も高いオンデマンドインスタンスEMRを起動します。この戦略を使用する場合は、少なくとも 1 つのインスタンスタイプの優先度を設定する必要があります。インスタンスタイプの優先度値を設定しない場合、Amazon はそのインスタンスタイプに最小の優先度をEMR割り当てます。クラスター内の各インスタンスフリート (プライマリ、コア、またはタスク) には、特定のインスタンスタイプに対して異なる優先度値を設定できます。

注記

capacity-optimized-prioritized スポット配分戦略を使用する場合、Amazon は優先順位を設定するときに、オンデマンドインスタンスとスポットインスタンスの両方に同じ優先順位EMRを適用します。

スポットインスタンスの配分戦略

スポットインスタンスには次のいずれかの配分戦略を指定できます。

price-capacity-optimized (推奨)

価格と容量の最適化配分戦略では、起動中のインスタンス数に対して、使用可能な容量が最も高く、価格が最も低いスポットインスタンスプールからスポットインスタンスを起動します。その結果、価格キャパシティ最適化戦略は通常、スポットキャパシティを獲得する可能性が高く、中断率が低くなります。これは Amazon EMRリリース 6.10.0 以降のデフォルトの戦略です。

capacity-optimized

容量の最適化配分戦略では、短期的に中断の可能性が最も低い、最も利用可能なプールにスポットインスタンスを起動します。これは、作業の再開に関連する中断に伴うコストが高くなる可能性があるワークロードに適しています。これは、Amazon EMRリリース 6.9.0 以前のデフォルトの戦略です。

capacity-optimized-prioritized

capacity-optimized-prioritized 割り当て戦略では、インスタンスフリート内のインスタンスタイプごとに優先度値を指定できます。Amazon はキャパシティーを最初にEMR最適化しますが、優先順位がフリートの最適なキャパシティーのプロビジョニング能力に大きく影響しない場合など、インスタンスタイプの優先順位はベストエフォートベースで尊重されます。このオプションは、特定のインスタンスタイプに対するニーズがまだある中断を最小限に抑える必要があるワークロードがある場合にお勧めします。この戦略を使用する場合は、少なくとも 1 つのインスタンスタイプの優先度を設定する必要があります。インスタンスタイプの優先度を設定しない場合、Amazon はそのインスタンスタイプに最小優先度値をEMR割り当てます。クラスター内の各インスタンスフリート (プライマリ、コア、またはタスク) には、特定のインスタンスタイプに対して異なる優先度値を設定できます。

注記

優先されたオンデマンド配分戦略を使用する場合、Amazon は優先順位を設定するときに、オンデマンドインスタンスとスポットインスタンスの両方に同じ優先順位値EMRを適用します。

diversified

分散配分戦略により、Amazon はすべてのスポットキャパシティプールにスポットインスタンスをEC2分散します。

lowest-price

最低価格配分戦略では、使用可能な容量を持つ最低価格のプールからスポットインスタンスを起動します。最低価格のプールに使用可能な容量がない場合、スポットインスタンスは使用可能な容量のある 2 番目に低価格のプールから取得されます。プールがリクエストされた容量を満たす前に容量が不足した場合、Amazon EC2フリートはリクエストを引き続き満たすために、次に低価格のプールから引き出します。希望する容量を確実に満たすために、複数のプールからスポットインスタンスを受け取る場合があります。この戦略では、インスタンスの価格のみが考慮され、キャパシティの可用性は考慮されないため、中断率が高くなる可能性があります。

配分戦略のアクセス許可

配分戦略オプションには、デフォルトの Amazon EMRサービスロールと Amazon EMRマネージドポリシー (EMR_DefaultRole および ) に自動的に含まれる複数のIAMアクセス許可が必要ですAmazonEMRServicePolicy_v2。クラスターにカスタムサービスロールまたは管理ポリシーを使用する場合は、クラスターを作成する前にこれらのアクセス許可を追加する必要があります。詳細については、「配分戦略のアクセス許可」を参照してください。

オプションのオンデマンドキャパシティ予約 (ODCRs) は、オンデマンド配分戦略オプションを使用する場合に使用できます。キャパシティ予約オプションを使用すると、Amazon EMRクラスター用に予約済みキャパシティを最初に使用するための設定を指定できます。これを使用して、重要なワークロードが、オープンまたはターゲットを絞った を使用して既に予約した容量を使用していることを確認することができますODCRs。重要でないワークロードの場合、キャパシティ予約設定を使用して、リザーブドキャパシティを消費するかどうかを指定できます。

キャパシティ予約は、属性 (インスタンスタイプ、プラットフォーム、アベイラビリティーゾーン) が一致するインスタンスのみ使用することができます。デフォルトでは、オープンキャパシティ予約は、インスタンス属性に一致するオンデマンドインスタンスをプロビジョニングEMRするときに Amazon によって自動的に使用されます。キャパシティの予約の属性と一致する実行中のインスタンスがない場合は、一致する属性を持つインスタンスを起動するまでは使用されません。クラスターの起動時にキャパシティ予約を使用しない場合は、起動オプションでキャパシティ予約設定を [なし] に設定する必要があります。

ただし、特定のワークロードに対してキャパシティ予約を指定することもできます。これにより、リザーブドキャパシティーで実行できるインスタンスを明示的に制御できます。オンデマンドキャパシティ予約については、「Amazon のインスタンスフリートでキャパシティ予約を使用する EMR」を参照してください。

配分戦略に必要なIAMアクセス許可

Amazon のサービスロール EMR (EMR ロール) では、オンデマンドインスタンスフリートまたはスポットインスタンスフリートの配分戦略オプションを使用するクラスターを作成するには、追加のアクセス許可が必要です。

これらのアクセス許可は、デフォルトの Amazon EMRサービスロール EMR_DefaultRole と Amazon EMRマネージドポリシー に自動的に含められますAmazonEMRServicePolicy_v2

クラスターにカスタムサービスロールまたは管理ポリシーを使用する場合は、次のアクセス許可を追加する必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DeleteLaunchTemplate", "ec2:CreateLaunchTemplate", "ec2:DescribeLaunchTemplates", "ec2:CreateLaunchTemplateVersion", "ec2:CreateFleet" ], "Resource": "*" } }

オープンまたはターゲットのキャパシティ予約を使用するクラスターを作成するために必要なサービスロールのアクセス許可を次に示します。配分戦略オプションの使用に必要なアクセス許可に加えて、これらのアクセス許可を含める必要があります。

例 サービスロールキャパシティ予約に関するポリシードキュメント

オープンキャパシティ予約を使用するには、次の追加のアクセス許可を含める必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeCapacityReservations", "ec2:DescribeLaunchTemplateVersions", "ec2:DeleteLaunchTemplateVersions" ], "Resource": "*" } ] }

ターゲットキャパシティ予約を使用するには、次の追加のアクセス許可を含める必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeCapacityReservations", "ec2:DescribeLaunchTemplateVersions", "ec2:DeleteLaunchTemplateVersions", "resource-groups:ListGroupResources" ], "Resource": "*" } ] }

クラスターのインスタンスフリートを設定する

Console
コンソールを使用してインスタンスフリートでクラスターを作成するには
  1. にサインインし AWS Management Console、https://console.aws.amazon.com/emr で Amazon EMRコンソールを開きます。

  2. 左側のナビゲーションペインの EMRでEC2クラスター を選択し、クラスター の作成 を選択します。

  3. [クラスターの設定][インスタンスフリート] を選択します。

  4. [ノードグループ] ごとに、[インスタンスタイプの追加] を選択し、プライマリインスタンスフリートとコアインスタンスフリートには最大 5 個のインスタンスタイプを選択し、タスクインスタンスフリートには最大 15 個のインスタンスタイプを選択します。Amazon EMRは、クラスターを起動するときに、これらのインスタンスタイプの任意の組み合わせをプロビジョニングする場合があります。

  5. 各ノードグループタイプで、各インスタンスの横にある [アクション] ドロップダウンメニューを選択し、これらの設定を変更します。

    EBS ボリュームの追加

    Amazon がインスタンスタイプをEMRプロビジョニングした後にインスタンスタイプにアタッチするEBSボリュームを指定します。

    加重容量の編集

    コアノードグループでは、この値をアプリケーションに合わせて任意のユニット数に変更します。YARN vCores 各フリートインスタンスタイプの の数は、デフォルトの加重キャパシティユニットとして使用されます。プライマリノードの加重容量は編集できません。

    最大スポット価格の編集

    フリートのインスタンスタイプごとに、最大スポット料金を指定します。この料金は、オンデマンド料金のパーセンテージまたは特定の金額として設定できます。アベイラビリティーゾーンの現在のスポット料金が最大スポット料金を下回る場合、Amazon はスポットインスタンスをEMRプロビジョニングします。お客様にご負担いただくのはスポット料金であり、必ずしも最大スポット料金ではありません。

  6. 必要に応じて、ノードのセキュリティグループを追加するには、ネットワークセクションでEC2セキュリティグループ (ファイアウォール) を展開し、ノードタイプごとにセキュリティグループを選択します。

  7. オプションで、配分戦略オプションを使用する場合は [配分戦略を適用] の横にあるチェックボックスをオンにし、スポットインスタンスに指定する配分戦略を選択します。Amazon EMRサービスロールに必要なアクセス許可がない場合は、このオプションを選択しないでください。詳細については、「インスタンスフリートの配分戦略」を参照してください。

  8. クラスターに適用するその他のオプションを選択します。

  9. クラスターを起動するには、[クラスターの作成] を選択します。

AWS CLI

を使用してインスタンスフリートでクラスターを作成して起動するには AWS CLI、次のガイドラインに従います。

  • インスタンスフリートでクラスターを作成して起動するには、 create-cluster パラメータとともに--instance-fleet コマンドを使用します。

  • クラスター内のインスタンスフリートの設定情報を得るには、list-instance-fleets コマンドを使用します。

  • 作成するクラスターAMIsに複数のカスタム Amazon Linux を追加するには、各InstanceType仕様で CustomAmiIdオプションを使用します。要件AMIsに合わせて、複数のインスタンスタイプと複数のカスタムでインスタンスフリートノードを設定できます。「例: インスタンスフリート設定でクラスターを作成する」を参照してください。

  • インスタンスフリートのターゲット容量に変更を加えるには、 modify-instance-fleet コマンドを使用します。

  • タスクインスタンスがないクラスターにタスクインスタンスを追加するには、 add-instance-fleetコマンドを使用します。

  • コマンドの CustomAmiId 引 add-instance-fleet数を使用して、タスクインスタンスフリートに複数のカスタムAMIsを追加できます。「例: インスタンスフリート設定でクラスターを作成する」を参照してください。

  • インスタンスフリートを作成するときに配分戦略オプションを使用するには、サービスロールを更新して、次のセクションのポリシードキュメントの例を含めます。

  • オンデマンド配分戦略でインスタンスフリートを作成するときにキャパシティ予約オプションを使用するには、サービスロールを更新して、次のセクションのポリシードキュメントの例を含めます。

  • インスタンスフリートは、デフォルトのEMRサービスロールと Amazon EMRマネージドポリシー (EMR_DefaultRole および ) に自動的に含まれますAmazonEMRServicePolicy_v2。クラスターにカスタムサービスロールまたは管理ポリシーを使用する場合は、次のセクションの配分戦略の新しいアクセス許可を追加する必要があります。

例: インスタンスフリート設定でクラスターを作成する

次の例は、 create-cluster コマンドを、組み合わせ可能なさまざまなオプションを使って実行する方法を示しています。

注記

デフォルトの Amazon EMRサービスロールとEC2インスタンスプロファイルを以前に作成していない場合は、 create-cluster コマンドを使用する前に aws emr create-default-roles を使用して作成します。

例: オンデマンドプライマリ、単一インスタンスタイプのオンデマンドコア、デフォルト VPC
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge}']
例: スポットプライマリ、単一インスタンスタイプのスポットコア、デフォルト VPC
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetSpotCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5}'] \ InstanceFleetType=CORE,TargetSpotCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5}']
例: オンデマンドプライマリ、単一インスタンスタイプを持つ混合コア、単一EC2サブネット
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetIds=['subnet-ab12345c'] \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=2,TargetSpotCapacity=6,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=2}']
例: オンデマンドプライマリ、複数の加重インスタンスタイプを持つスポットコア、スポットのタイムアウト、EC2サブネットの範囲
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetIds=['subnet-ab12345c','subnet-de67890f'] \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetSpotCapacity=11,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=3}',\ '{InstanceType=m4.2xlarge,BidPrice=0.9,WeightedCapacity=5}'],\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=120,TimeoutAction=SWITCH_TO_ON_DEMAND}'}
例: 複数の加重インスタンスタイプを持つオンデマンドプライマリ、混合コア、タスク、コアスポットインスタンスのタイムアウト、EC2サブネットの範囲
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetIds=['subnet-ab12345c','subnet-de67890f'] \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=8,TargetSpotCapacity=6,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=3}',\ '{InstanceType=m4.2xlarge,BidPrice=0.9,WeightedCapacity=5}'],\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=120,TimeoutAction=SWITCH_TO_ON_DEMAND}'} \ InstanceFleetType=TASK,TargetOnDemandCapacity=3,TargetSpotCapacity=3,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=3}']
例: スポットプライマリ、コアまたはタスクなし、Amazon EBS設定、デフォルト VPC
aws emr create-cluster --release-label Amazon EMR 5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetSpotCapacity=1,\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=60,TimeoutAction=TERMINATE_CLUSTER}'},\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,\ EbsConfiguration={EbsOptimized=true,EbsBlockDeviceConfigs=[{VolumeSpecification={VolumeType=gp2,\ SizeIn GB=100}},{VolumeSpecification={VolumeType=io1,SizeInGB=100,Iop s=100},VolumesPerInstance=4}]}}']
例: 複数のカスタム AMIs、複数のインスタンスタイプ、オンデマンドプライマリ、オンデマンドコア
aws emr create-cluster --release-label Amazon EMR 5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-123456},{InstanceType=m6g.xlarge, CustomAmiId=ami-234567}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-123456},{InstanceType=m6g.xlarge, CustomAmiId=ami-234567}']
例: 複数のインスタンスタイプと複数のカスタムを持つ実行中のクラスターにタスクノードを追加する AMIs
aws emr add-instance-fleet --cluster-id j-123456 --release-label Amazon EMR 5.3.1 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleet \ InstanceFleetType=Task,TargetSpotCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-123456}',\ '{InstanceType=m6g.xlarge,CustomAmiId=ami-234567}']
例: JSON設定ファイルを使用する

ファイルでインスタンスフリートパラメータを設定しJSON、そのJSONファイルをインスタンスフリートの唯一のパラメータとして参照できます。例えば、次のコマンドはJSON設定ファイル を参照しますmy-fleet-config.json

aws emr create-cluster --release-label emr-5.30.0 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets file://my-fleet-config.json

- my-fleet-config.json ファイルは、次の例に示すように、プライマリインスタンスフリート、コアインスタンスフリート、タスクインスタンスフリートを指定します。コアインスタンスフリートはオンデマンドの割合として最大スポット料金 (BidPrice) を使用しますが、タスクおよびプライマリインスタンスフリートは の文字列として最大スポット料金 (BidPriceAsPercentageofOnDemandPrice) を使用しますUSD。

[ { "Name": "Masterfleet", "InstanceFleetType": "MASTER", "TargetSpotCapacity": 1, "LaunchSpecifications": { "SpotSpecification": { "TimeoutDurationMinutes": 120, "TimeoutAction": "SWITCH_TO_ON_DEMAND" } }, "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", "BidPrice": "0.89" } ] }, { "Name": "Corefleet", "InstanceFleetType": "CORE", "TargetSpotCapacity": 1, "TargetOnDemandCapacity": 1, "LaunchSpecifications": { "OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first", "CapacityReservationResourceGroupArn": "String" } }, "SpotSpecification": { "AllocationStrategy": "capacity-optimized", "TimeoutDurationMinutes": 120, "TimeoutAction": "TERMINATE_CLUSTER" } }, "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", "BidPriceAsPercentageOfOnDemandPrice": 100 } ] }, { "Name": "Taskfleet", "InstanceFleetType": "TASK", "TargetSpotCapacity": 1, "LaunchSpecifications": { "OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "CapacityReservationPreference": "none" } }, "SpotSpecification": { "TimeoutDurationMinutes": 120, "TimeoutAction": "TERMINATE_CLUSTER" } }, "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", "BidPrice": "0.89" } ] } ]

インスタンスフリートのターゲット容量を変更する

コマンドを使用して、インスタンスフリートの新しいターゲット容量を指定します modify-instance-fleet 。クラスター ID とインスタンスフリート ID を指定しなければなりません。list-instance-fleets コマンドを使用して、インスタンスフリート を取得しますIDs。

aws emr modify-instance-fleet --cluster-id <cluster-id> \ --instance-fleet \ InstanceFleetId='<instance-fleet-id>',TargetOnDemandCapacity=1,TargetSpotCapacity=1

タスクインスタンスフリートをクラスターに追加する

クラスターにプライマリインスタンスフリートおよびコアインスタンスフリートしかない場合、add-instance-fleet コマンドを使用してタスクインスタンスフリートを追加できます。このコマンドは、タスクインスタンスフリートを追加するためだけに使用できます。

aws emr add-instance-fleet --cluster-id <cluster-id> --instance-fleet \ InstanceFleetType=TASK,TargetSpotCapacity=1,\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=20,TimeoutAction=TERMINATE_CLUSTER}'},\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5}']

クラスター内のインスタンスフリートの設定情報を取得する

クラスター内のインスタンスフリートの構成情報を得るには、 list-instance-fleets コマンドを使用します。コマンドは、クラスター ID を入力として受け入れます。次の例では、このコマンドと、それによるプライマリタスクインスタンスグループとコアタスクインスタンスグループを含むクラスターの出力を示しています。フルレスポンス構文については、「Amazon リファレンスListInstanceFleets」の「」を参照してください。 EMR API

list-instance-fleets --cluster-id <cluster-id>
{ "InstanceFleets": [ { "Status": { "Timeline": { "ReadyDateTime": 1488759094.637, "CreationDateTime": 1488758719.817 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 6, "Name": "CORE", "InstanceFleetType": "CORE", "LaunchSpecifications": { "SpotSpecification": { "TimeoutDurationMinutes": 60, "TimeoutAction": "TERMINATE_CLUSTER" } }, "ProvisionedOnDemandCapacity": 2, "InstanceTypeSpecifications": [ { "BidPrice": "0.5", "InstanceType": "m5.xlarge", "WeightedCapacity": 2 } ], "Id": "if-1ABC2DEFGHIJ3" }, { "Status": { "Timeline": { "ReadyDateTime": 1488759058.598, "CreationDateTime": 1488758719.811 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 0, "Name": "MASTER", "InstanceFleetType": "MASTER", "ProvisionedOnDemandCapacity": 1, "InstanceTypeSpecifications": [ { "BidPriceAsPercentageOfOnDemandPrice": 100.0, "InstanceType": "m5.xlarge", "WeightedCapacity": 1 } ], "Id": "if-2ABC4DEFGHIJ4" } ] }