ユニフォームインスタンスグループを設定する - Amazon EMR

ユニフォームインスタンスグループを設定する

インスタンスグループの構成では、各ノードタイプ (マスター、コア、またはタスク) は、同じインスタンスタイプで構成されており、オンデマンドまたはスポットインスタンスで、同じ購入オプションが使用されます。これらの設定は、インスタンスグループを作成するときに指定します。この価格を後で変更することはできません。ただし、同じタイプと同じ購入オプションのインスタンスを、コアインスタンスグループおよびタスクインスタンスグループに追加できます。インスタンスを削除することもできます。

クラスターのオンデマンドインスタンスが、アカウントで使用可能なオープンキャパシティ予約の属性 (インスタンスタイプ、プラットフォーム、テナンシー、アベイラビリティーゾーン) と一致する場合、キャパシティ予約は自動的に適用されます。プライマリノード、コアノード、およびタスクノードには、オープンキャパシティ予約を使用できます。ただし、インスタンスグループを使用してクラスターをプロビジョニングする場合、ターゲットキャパシティ予約を使用したり、一致する属性を持つオープンキャパシティ予約でインスタンスが起動しないようにしたりすることはできません。ターゲットキャパシティ予約を使用するか、またはインスタンスがオープンキャパシティ予約で起動しないようにする場合、代わりにインスタンスフリートを使用します。詳細については、「インスタンスフリートでキャパシティ予約を使用する」を参照してください。

クラスターの作成後に異なるインスタンスタイプを追加するには、タスクインスタンスグループを追加することができます。インスタンスグループごとに、異なるインスタンスタイプと購入オプションを選択できます。詳細については、「クラスターのスケーリングを使用する」を参照してください。

インスタンスを起動するときに、オンデマンドインスタンスのキャパシティ予約設定がデフォルトの open に設定されるため、一致する属性 (インスタンスタイプ、プラットフォーム、アベイラビリティーゾーン) を持つすべてのオープンキャパシティ予約で実行できます。オンデマンドキャパシティ予約の共有については、「インスタンスフリートでキャパシティ予約を使用する」を参照してください 。

このセクションでは、ユニフォームインスタンスグループでクラスターを作成する手順を説明します 手動でのインスタンスグループの追加または削除、あるいは移動スケーリングによって既存のインスタンスグループを変更する詳細については、「 クラスターを管理する」を参照してください。

コンソールを使用してユニフォームインスタンスグループを設定する

注記

Amazon EMR コンソールは、再設計され、使いやすくなりました。古いコンソールと新しいコンソールエクスペリエンスの違いについては、「コンソールの新機能」を参照してください。

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

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

  3. [クラスターの設定][インスタンスグループ] を選択します。

  4. [ノードグループ] には、ノードグループのタイプごとにセクションがあります。プライマリノードグループで 3 つのプライマリノードを作成する場合は、[複数のプライマリノードを使用] チェックボックスを選択します。スポット購入を使用する場合は、[スポット購入オプションを使用] チェックボックスを選択します。

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

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

    EBS ボリュームの追加

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

    最大スポット価格の編集

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

  7. オプションで、[ノード設定] を展開して JSON 設定を入力するか、Amazon S3 から JSON をロードします。

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

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

Old console

次の手順は、クラスターを作成するときの [Advanced Options (詳細オプション)] を示しています。[Quick options (クイックオプション)] によっても、インスタンスグループ構成でクラスターを作成できます。

古いコンソールを使用してユニフォームインスタンスグループでクラスターを作成するには
  1. 新しい Amazon EMR コンソールに移動し、サイドナビゲーションから [古いコンソールに切り替え] を選択します。古いコンソールに切り替えたときの動作の詳細については、「Using the old console」を参照してください。

  2. [Create cluster] (クラスターを作成) を選択します。

  3. [Go to advanced options (詳細オプションに移動する)] を選択し、[ソフトウェアの構成] オプションに入り、[次へ] を選択します。

  4. [Hardware Configuration (ハードウェア構成)] 画面で、[Uniform instance groups (ユニフォームインスタンスグループ)] を選択した状態のままにします。

  5. [Network (ネットワーク)] を選択し、クラスター用の [EC2 Subnet (EC2 サブネット)] を選択します。選択したサブネットが、各サブネットにリストされたアベイラビリティーゾーンと関連付けられます。詳細については、「ネットワークを設定する」を参照してください。

    注記

    アカウントおよびリージョンによっては、[ネットワーク][EC2-Classic に起動] を選択するオプションが提供されます。そのオプションを選択する場合、[EC2 サブネット] ではなく、[EC2 アベイラビリティーゾーン] を選択します。詳細については、「Linux インスタンス用 Amazon EC2 ユーザーガイド」の「Amazon EC2 および Amazon VPC」を参照してください。

  6. 各 [Node type (ノードタイプ)] 行で次の手順に従います。

    • [ノードタイプ] の下で、インスタンスグループのデフォルト名を変更する場合、鉛筆アイコンを選択してわかりやすい名前を入力します。[タスク] インスタンスグループを削除する場合、X アイコンを選択してください。追加の [タスク] インスタンスグループを追加するには、[タスクインスタンスグループを追加] を選択します。

    • [インスタンスタイプ] の下で、鉛筆アイコンを選択し、そのノードタイプに使用するインスタンスタイプを選択します。

      重要

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

    • [インスタンスタイプ] で、[設定] の鉛筆アイコンを選択し、インスタンスグループごとにアプリケーションの設定を編集します。

    • [Instance count (インスタンス数)] に、各ノードタイプに使用するインスタンス数を入力します。

    • [Purchasing option] (購入のオプション) で、[オンデマンド] または [スポット] を選択します。[スポット] を選択した場合は、スポットインスタンスの上限価格のオプションを選択します。デフォルトでは、[最高価格としてオンデマンドを使用] が選択されます。[最高価格 ¥/時の設定] を選択し、上限価格を入力できます。選択した [EC2 Subnet (EC2 サブネット)] のアベイラビリティーゾーンは、[Maximum Spot price (最大スポット料金)] を下回っています。

      ヒント

      [スポット] の情報ツールヒントの上にカーソルを置き、現在のリージョンのアベイラビリティーゾーンに対する現在のスポット料金を確認します。最低のスポット価格は緑色で表示されます。[EC2 Subnet (EC2 サブネット)] の選択の変更に、この情報を使用できます。

    • [Auto Scaling for Core and Task node types (コアノードタイプとタスクノードタイプの自動スケーリング)] で、鉛筆アイコンをクリックして、自動スケーリングオプションを設定します。詳細については、「カスタムポリシーによる自動スケーリングをインスタンスグループに使用する 」を参照してください。

  7. 必要に応じて [Add task instance group (タスクインスタンスグループの追加)] を選択して、前の手順で説明したように設定します。

  8. [次へ] を選択してクラスター設定を変更し、続いてクラスターを起動します。

AWS CLI を使用してユニフォームインスタンスグループでクラスターを作成する

AWS CLI を使用してクラスターのインスタンスグループ設定を指定するには、create-cluster コマンドと共に --instance-groups パラメータを使用します。インスタンスグループに BidPrice 引数を指定しない限り、Amazon EMR はオンデマンドインスタンスオプションを想定します。オンデマンドインスタンスとさまざまなクラスターオプションで、ユニフォームインスタンスグループを起動する create-cluster コマンドの例では、コマンドラインに aws emr create-cluster help と入力するか、「AWS CLI コマンドリファレンス」の「create-cluster」を参照してください。

AWS CLIを使用して、スポットインスタンスを使用するクラスターにユニフォームインスタンスグループを作成できます。提供されるスポット価格はアベイラビリティーゾーンによって異なります。CLI または API を使用する場合、AvailabilityZone 引数 (EC2-classic ネットワークを使用している場合)、または --ec2-attributes パラメータの SubnetID 引数でアベイラビリティーゾーンを指定することができます。選択するアベイラビリティーゾーンまたはサブネットはクラスターに適用されるため、すべてのインスタンスグループに使用されます。アベイラビリティーゾーンまたはサブネットを明示的に指定しない場合、Amazon EMR はクラスターの起動時に最低のスポット料金のアベイラビリティーゾーンを選択します。

次の例は、すべてがスポットインスタンスを使用しているプライマリ、コア、および 2 つのタスクインスタンスグループを作成する、create-cluster コマンドを示しています。myKey を Amazon EC2 キーペアの名前に置き換えます。

注記

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

aws emr create-cluster --name "MySpotCluster" \ --release-label emr-5.36.1 \ --use-default-roles \ --ec2-attributes KeyName=myKey \ --instance-groups \ InstanceGroupType=MASTER,InstanceType=m5.xlarge,InstanceCount=1,BidPrice=0.25 \ InstanceGroupType=CORE,InstanceType=m5.xlarge,InstanceCount=2,BidPrice=0.03 \ InstanceGroupType=TASK,InstanceType=m5.xlarge,InstanceCount=4,BidPrice=0.03 \ InstanceGroupType=TASK,InstanceType=m5.xlarge,InstanceCount=2,BidPrice=0.04

CLI を使用して、インスタンスグループ内のインスタンスタイプごとに一意のカスタム AMI を指定するユニフォームインスタンスグループクラスターを作成できます。これにより、同じインスタンスグループ内で異なるインスタンスアーキテクチャを使用できます。各インスタンスタイプは、アーキテクチャが一致するカスタム AMI を使用する必要があります。例えば、m5.xlarge インスタンスタイプは x86_64 アーキテクチャのカスタム AMI を使用して設定し、m6g.xlarge インスタンスタイプは対応する AWS AARCH64 (ARM) アーキテクチャのカスタム AMI を使用して設定します。

次の例は、2 つのインスタンスタイプで作成され、それぞれ独自のカスタム AMI を持つユニフォームインスタンスグループクラスターを示しています。カスタム AMI は、クラスターーレベルではなく、インスタンスタイプレベルでのみ指定されることに注意してください。これは、インスタンスタイプ AMI とクラスターレベルの AMI の間の競合を回避するためです。そうしないと、クラスターの起動が失敗する原因となります。

aws emr create-cluster --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \ --instance-groups \ InstanceGroupType=MASTER,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-123456 \ InstanceGroupType=CORE,InstanceType=m6g.xlarge,InstanceCount=1,CustomAmiId=ami-234567

実行中のクラスターに追加するインスタンスグループに複数のカスタム AMI を追加できます。次の例に示すように、CustomAmiId 引数を add-instance-groups コマンドとともに使用できます。

aws emr add-instance-groups --cluster-id j-123456 \ --instance-groups \ InstanceGroupType=Task,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-123456

Java SDK を使用してインスタンスグループを作成する

クラスターのインスタンスグループの構成を指定する InstanceGroupConfig オブジェクトをインスタンス化します。スポットインスタンスを使用するには、 withBidPrice オブジェクトで、 withMarket および InstanceGroupConfig プロパティを設定します。次のコードは、スポットインスタンスを実行するプライマリ、コア、およびタスクインスタンスグループを定義する方法を示します。

InstanceGroupConfig instanceGroupConfigMaster = new InstanceGroupConfig() .withInstanceCount(1) .withInstanceRole("MASTER") .withInstanceType("m4.large") .withMarket("SPOT") .withBidPrice("0.25"); InstanceGroupConfig instanceGroupConfigCore = new InstanceGroupConfig() .withInstanceCount(4) .withInstanceRole("CORE") .withInstanceType("m4.large") .withMarket("SPOT") .withBidPrice("0.03"); InstanceGroupConfig instanceGroupConfigTask = new InstanceGroupConfig() .withInstanceCount(2) .withInstanceRole("TASK") .withInstanceType("m4.large") .withMarket("SPOT") .withBidPrice("0.10");