インスタンスフリートを構成する - Amazon EMR

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

インスタンスフリートを構成する

クラスターのインスタンスフリート構成は、最も広範な EC2 インスタンスのプロビジョニングオプションを提供します。インスタンスフリートでは、各フリート内のオンデマンドインスタンスとスポットインスタンスのターゲット容量を指定します。クラスターを起動すると、Amazon EMR は、ターゲットが満たされるまでインスタンスをプロビジョニングします。ターゲットを満たすときは、使用する Amazon EMR ごとに、フリートあたり最大 5 つの EC2 インスタンスタイプを指定できます。また、異なるアベイラビリティーゾーンに複数のサブネットを選択することもできます。Amazon EMR がクラスターを起動するときは、これらのサブネットで、指定されたインスタンスと購入オプションを探します。

クラスターの実行中に、価格の値上げまたはインスタンスの失敗のために Amazon EC2 がスポットインスタンスを再利用する場合、Amazon EMR は指定するインスタンスタイプのいずれかで、そのインスタンスを置き換えようとします。これにより、スポット料金の急激な増加中に容量を再取得することが容易になります。インスタンスフリートにより、ノードタイプごとに、柔軟で順応性に富むリソース戦略を作成できます。たとえば、特定のフリート内で、利用可能な場合はより安価なスポットキャパシティーでオンデマンドキャパシティーのコアを補足し、目的の料金でスポットが利用できない場合は、オンデマンドキャパシティーに切り替えることができます。

注記

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

オプションのオンデマンドおよびスポットインスタンス配分戦略は、 Amazon EMR バージョン 5.12.1 以降で使用できます。

デフォルトの EMR インスタンスフリートクラスター設定の機能強化として、配分戦略機能は EMR バージョン 5.12.1 以降で利用できます。これにより、インスタンスフリートの容量の割り当てが最適化され、クラスターノードごとにターゲット戦略を選択できます。

  • オンデマンドインスタンスは、最低価格の戦略を使用して、最低価格のインスタンスを最初に起動します。

  • スポットインスタンスは、容量最適化戦略を使用して、起動するインスタンスの数に最適な容量を持つスポットインスタンスプールからスポットインスタンスを起動します。

配分戦略オプションでは、デフォルトの EMR クラスターインスタンスフリート設定で許可される最大 5 つの設定ではなく、クラスターの作成時にタスクノードごとに最大 15 の EC2 インスタンスタイプを指定することもできます。

主要な機能の概要

  • 1 つのインスタンスフリート、およびノードタイプ (マスター、コア、タスク) あたり 1 つのみ。フリートごとに最大 5 つの EC2 インスタンスタイプ (配分戦略オプションを使用する場合、タスクインスタンスフリートごとに 15 タイプ) が指定されます。

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

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

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

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

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

    • オプションで、各フリートに定義期間 (スポットブロックとも呼ばれる) を指定します。スポットインスタンスは、定義期間が過ぎた後にのみ終了します。

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

  • フリートごとに、必要に応じて、オンデマンドインスタンスの最低価格、スポットインスタンスのキャパシティーに最適化された配分戦略を適用することを選択します。

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

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

ターゲット容量の設定

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

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

重要

AWS マネジメントコンソール を使用してインスタンスタイプを選択すると、[インスタンスタイプ] ごとに表示される [vCPU] の数は、そのインスタンスタイプの EC2 vCPU の数ではなく、そのインスタンスタイプの YARN vcores の数になります。インスタンスタイプごとの vCPU の数の詳細については、「Amazon EC2 インスタンスタイプ」を参照してください。

フリートごとに、最大 5 つの EC2 インスタンスタイプを指定します。アプリケーション戦略オプションを使用している場合は、タスクインスタンスフリートに最大 15 の EC2 インスタンスタイプを指定できます。 は、これらの EC2 インスタンスタイプの任意の組み合わせAmazon EMRを選択して、ターゲット容量を満たします。Amazon EMR は完全にターゲット容量を満たそうとするため、超過が発生する可能性があります。たとえば、2 つの満たされていないユニットがある場合、Amazon EMR は 5 ユニットのインスタンスしかプロビジョニングできず、インスタンスは引き続きプロビジョニングされます。つまり、ターゲット容量を 3 ユニット超過します。

ターゲット容量を減らして実行中のクラスターのサイズを変更する場合、Amazon EMR は新しいターゲットに合わせてアプリケーションタスクを完了し、インスタンスを削除しようとします。詳細については、「タスクの完了時に終了」を参照してください。Amazon EMR には、サイズ変更オペレーションを完了するための 60 分のタイムアウトがあります。場合によっては、60 分後にノードでまだ実行中のタスクがあるが、Amazon EMR はサイズ変更オペレーションが正常に実行され、新しいターゲットが満たされていないと報告することがあります。

起動オプション

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

フリート内のスポットインスタンスに [Defined duration (定義期間)] を指定できます。スポット料金が変わると、 Amazon EMR は [Defined duration (定義された期間)] が終了するまでインスタンスを終了しません。定義期間の価格は、このオプションを選択すると適用されます。定義期間を指定しない場合、インスタンスは、スポット価格が最大スポット料金を上回るとすぐ終了します。詳細については、「スポットインスタンスの期間の指定」および「定義された期間の料金表のAmazon EC2スポットインスタンスの料金」を参照してください。

各フリートで、[Provisioning timeout (プロビジョニングのタイムアウト).] を定義することもできます。タイムアウトは、クラスターが作成時に容量をプロビジョニングしているときに、指定どおりにターゲット容量を満たすために十分な数のスポットインスタンスをプロビジョニングできない場合に適用されます。タイムアウト期間と、実行するアクションを指定します。クラスターを終了させるか、残りのスポット容量を満たすためにオンデマンド容量のプロビジョニングに切り替えることができます。オンデマンドへの切り替えを選択した場合、残りのスポット容量は、タイムアウト後に実質的にオンデマンドターゲット容量に追加されます。

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

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

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

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

マスターノードの構成

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

コンソールを使用してインスタンスフリートを構成する

インスタンスフリートを使用してクラスターを作成するには、 コンソールの [Advanced options (詳細オプションAmazon EMR)] 設定を使用します。

EMR バージョン 5.12.1 以降では、クラスターインスタンスフリートを作成する推奨される方法は、配分戦略を適用した方法です。この新しいオプションは、より高速なクラスタープロビジョニング、より正確なスポットインスタンスの割り当て、および新しい配分戦略オプションがないインスタンスフリートと比較して少ないスポットインスタンスの中断に推奨されます。新しい配分戦略オプションを使用してクラスターを作成するには、デフォルトの EMR サービスロールと EMR 管理ポリシー (DefaultRole および AmazonElasticMapReduceRole) を自動的に含む複数のアクセス許可が必要です。クラスターにカスタムサービスロールまたは管理ポリシーを使用している場合は、クラスターを作成する前に、割り当て戦略に対して次の新しいアクセス許可を追加する必要があります。」を参照してください。Service Role for Amazon EMR (EMR Role).

"ec2:DeleteLaunchTemplate", "ec2:CreateLaunchTemplate", "ec2:DescribeLaunchTemplates", "ec2:CreateFleet"

コンソールを使用してインスタンスフリートでクラスターを作成するには

  1. Amazon EMR コンソール (https://console.aws.amazon.com/elasticmapreduce/) を開きます。

  2. [クラスターの作成] を選択します。

  3. Amazon EMR コンソール (https://console.aws.amazon.com/elasticmapreduce/.) を開きます。

  4. クラスターの作成.] を選択します。

  5. コンソールウィンドウの上部で、[Go to advanced options (詳細オプションに移動する)] を選択し、[Software Configuration options (ソフトウェア設定オプション)] と入力して、[Next (次へ)] を選択します。

  6. [クラスター構成] で、[インスタンスフリート] を選択します。

  7. [ネットワーク] に値を入力します。[Network] で VPC を選択した場合は、単一の [EC2 Subnet] または [Ctrl] + クリックで複数の EC2 サブネットを選択します。選択するサブネットは同じ種類 (パブリックまたはプライベート) である必要があります。1 つのみ選択した場合、クラスターはそのサブネット内で起動します。グループを選択した場合は、クラスターの起動時にグループから最適なサブネットが選択されます。

    注記

    アカウントとリージョンによっては、[Network] の [Launch into EC2] を選択するオプションが表示される場合があります。そのオプションを選択する場合、[EC2 Subnets (EC2 サブネット)] ではなく、[EC2 Availability Zones (EC2 アベイラビリティーゾーン).] から 1 つ以上を選択します。詳細については、の「」Amazon EC2および「」を参照してくださいAmazon VPCLinux インスタンス用 Amazon EC2 ユーザーガイド

  8. [Allocation Strategy] で、割り当て戦略を適用するチェックボックスをオンにします。

    新しい配分戦略オプションを使用しない場合は、チェックボックスをオフのままにします。

  9. インスタンスフリートのデフォルト名を変更する場合は、[Node type (ノードタイプ)] ごとに鉛筆アイコンをクリックし、わかりやすい名前を入力します。[タスク] インスタンスフリートを削除する場合は、[タスク] 行の右側にある [X] アイコンをクリックします。

  10. [Add/remove instance types to fleet (フリートにインスタンスタイプを追加/削除する)] をクリックし、マスターインスタンスフリートとコアインスタンスフリートのリストから最大 5 つのインスタンスタイプを選択します。タスクインスタンスフリートには最大 15 のインスタンスタイプを追加します。Amazon EMR は、クラスターの起動時にこれらのインスタンスタイプの任意の組み合わせをプロビジョニングすることを選択できます。

  11. コアインスタンスタイプとタスクインスタンスタイプごとに、そのインスタンスの加重容量 (各インスタンスは X ユニットとしてカウントされます) を定義する方法を選択します。vCores 各フリートインスタンスタイプの YARN の数は、デフォルトの加重キャパシティーユニットとして使用されますが、値をアプリケーションに合った任意の単位に変更できます。

  12. [Target capacity (ターゲット容量)] で、フリートあたりのオンデマンドインスタンスとスポットインスタンスの合計数を定義します。EMR は、フリート内のインスタンスがオンデマンドおよびスポットターゲット容量のリクエストされたユニットを満たすようにします。フリートにオンデマンド単位またはスポット単位が指定されていない場合、そのフリートには容量がプロビジョニングされません。

  13. スポットの [Target capacity (ターゲット容量)] でフリートが設定されている場合は、最大スポット料金をオンデマンド料金の % として入力するか、[Dollars ($) (ドル ($))] 金額を米ドルで入力できます。

  14. インスタンスタイプがプロビジョニングされるときに EBS ボリュームをアタッチするには、[EBS Storage (EBS ストレージ)] の隣にある鉛筆をクリックしてから、EBS 構成オプションを入力します。

  15. [スポット] のインスタントカウントを確立した場合は、次のガイドラインに従って [スポットのアドバンストオプション] を選択します。

    • [Defined duration (定義期間)] - [Not set (未設定)] (デフォルト) のままにした場合、スポット料金が最大スポット料金を上回ったとき、またはクラスターが終了するとすぐにスポットインスタンスが終了します。値を設定すれば、スポットインスタンスはその期間が終わるまで終了しません。

      重要

      [Defined duration (定義された期間)] を設定した場合、特別な定義された期間料金が適用されます。料金詳細については、「Amazon EC2 スポットインスタンスの価格設定.」を参照してください。

    • プロビジョニングのタイムアウト – これらの設定を使用して、指定したAmazon EMRフリートインスタンスタイプからスポットインスタンスをプロビジョニングできないときの動作を制御します。分数でタイムアウト期間を入力し、[Terminate the cluster (クラスターを終了する)] か、[Switch to provisioning On-Demand Instances (オンデマンドインスタンスのプロビジョニングに切り替える).] かを選択します。オンデマンドインスタンスに切り替えることを選択した場合、オンデマンドインスタンスの割り当てられた容量はスポットインスタンスのターゲット容量にカウントされ、スポットインスタンスのターゲット容量が満たされるまでオンデマンドインスタンスがAmazon EMRプロビジョニングされます。

  16. [次へ] を選択し、他のクラスター設定を変更して、[次へ] をクリックします。

  17. 新しい配分戦略オプションを適用するように選択した場合は、[Security Options (セキュリティオプション)] 設定で、配分戦略オプションに必要なアクセス許可を含む EMR ロールEC2 インスタンスプロファイルを選択します。それ以外の場合、クラスターの作成は失敗します。

  18. [Create Cluster] をクリックします。

CLI を使用してインスタンスフリートを構成する

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

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

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

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

  • インスタンスフリートの作成時に配分戦略オプションを使用するには、以下のポリシードキュメントの例を含むようにサービスロールを更新します。

例 サービスロールのポリシードキュメント

これらは、インスタンスフリート配分戦略オプションを使用するクラスターを作成するために必要な追加のサービスロールのアクセス許可です。

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

読みやすくするため、Linux の行連結文字 (\) を含めています。Linux コマンドでは、これらの文字は削除することも、使用することもできます。Windows の場合は、削除するか、キャレット (^) で置き換えます。

インスタンスフリート構成でクラスターを作成する

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

注記

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

例: オンデマンドマスター、単一インスタンスタイプのオンデマンドコア、デフォルト 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=m5.2xlarge,BidPrice=0.9,WeightedCapacity=5}'],\ LaunchSpecifications={SpotSpecification='{BlockDurationMinutes=180,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=m5.2xlarg,BidPrice=0.9,WeightedCapacity=5}'],\ LaunchSpecifications={SpotSpecification='{BlockDurationMinutes=180,TimeoutDurationMinutes=120,TimeoutAction=SWITCH_TO_ON_DEMAND}'} \ InstanceFleetType=TASK,TargetOnDemandCapacity=3,TargetSpotCapacity=3,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=3}']

例: スポットマスター、コアまたはタスクなし、EBS 構成、デフォルト 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,\ 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}]}}']

例 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) を使用します。

[ { "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" }, "SpotSpecification": { "AllocationStrategy": "capacity-optimized", "TimeoutDurationMinutes": 120, "TimeoutAction": "TERMINATE_CLUSTER" } }, "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", "BidPriceAsPercentageOfOnDemandPrice": 100 } ] }, { "Name": "Taskfleet", "InstanceFleetType": "TASK", "TargetSpotCapacity": 1, "LaunchSpecifications": { "SpotSpecification": { "TimeoutDurationMinutes": 120, "TimeoutAction": "TERMINATE_CLUSTER" } }, "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", "BidPrice": "0.89" } ] } ]

クラスター内でインスタンスフリートの構成情報を取得する

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

list-instance-fleets --cluster-id 'j-12ABCDEFGHI34JK'
{ "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" } ] }

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

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

aws emr modify-instance-fleet --cluster-id 'j-12ABCDEFGHI34JK' / --instance-fleet InstanceFleetId='if-2ABC4DEFGHIJ4',TargetOnDemandCapacity=1,TargetSpotCapacity=1

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

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

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