翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon EMR クラスターのユニフォームインスタンスグループを設定する
インスタンスグループの構成では、各ノードタイプ (マスター、コア、またはタスク) は、同じインスタンスタイプで構成されており、オンデマンドまたはスポットインスタンスで、同じ購入オプションが使用されます。これらの設定は、インスタンスグループを作成するときに指定します。この価格を後で変更することはできません。ただし、同じタイプと同じ購入オプションのインスタンスを、コアインスタンスグループおよびタスクインスタンスグループに追加できます。インスタンスを削除することもできます。
クラスターのオンデマンドインスタンスが、アカウントで使用可能なオープンキャパシティ予約の属性 (インスタンスタイプ、プラットフォーム、テナンシー、アベイラビリティーゾーン) と一致する場合、キャパシティ予約は自動的に適用されます。プライマリノード、コアノード、およびタスクノードには、オープンキャパシティ予約を使用できます。ただし、インスタンスグループを使用してクラスターをプロビジョニングする場合、ターゲットキャパシティ予約を使用したり、一致する属性を持つオープンキャパシティ予約でインスタンスが起動しないようにしたりすることはできません。ターゲットキャパシティ予約を使用するか、またはインスタンスがオープンキャパシティ予約で起動しないようにする場合、代わりにインスタンスフリートを使用します。詳細については、「Amazon EMR でインスタンスフリートにキャパシティ予約を使用する」を参照してください。
クラスターの作成後に異なるインスタンスタイプを追加するには、タスクインスタンスグループを追加することができます。インスタンスグループごとに、異なるインスタンスタイプと購入オプションを選択できます。詳細については、「Amazon EMR クラスタースケーリングを使用してワークロードの変化に適応する」を参照してください。
インスタンスを起動するときに、オンデマンドインスタンスのキャパシティ予約設定がデフォルトの open
に設定されるため、一致する属性 (インスタンスタイプ、プラットフォーム、アベイラビリティーゾーン) を持つすべてのオープンキャパシティ予約で実行できます。オンデマンドキャパシティ予約の共有については、「Amazon EMR でインスタンスフリートにキャパシティ予約を使用する」を参照してください 。
このセクションでは、ユニフォームインスタンスグループでクラスターを作成する手順を説明します 手動でのインスタンスグループの追加または削除、あるいは移動スケーリングによって既存のインスタンスグループを変更する詳細については、「 Amazon EMR クラスターの管理」を参照してください。
コンソールを使用してユニフォームインスタンスグループを設定する
を使用して 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-labelemr-7.7.0
\ --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");