

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 為您的 Amazon EMR 叢集設定統一執行個體群組
<a name="emr-uniform-instance-group"></a>

使用執行個體群組組態，每個節點類型 (主要、核心或任務) 包含相同的執行個體類型和適用於以下執行個體的相同購買選項：隨需或 Spot。您建立執行個體群組時，您會指定這些設定。這些設定稍後無法變更。不過，您可以將相同類型的執行個體和購買選項新增到核心和任務執行個體群組。您也可以移除執行個體。

如果叢集的隨需執行個體與您帳戶中可用的開放容量保留 (執行個體類型、平台、租用和可用區域) 的屬性相符，則會自動套用容量保留。您可以針對主要、核心和任務節點使用開放容量保留。但是，在使用執行個體群組佈建叢集時，您無法使用目標容量保留，或防止執行個體在具有相符屬性的開放容量保留中啟動。如果您想要使用目標容量保留或防止執行個體在開放容量保留中啟動，請改用執行個體機群。如需詳細資訊，請參閱[在 Amazon EMR 中對執行個體機群使用容量保留](on-demand-capacity-reservations.md)。

若要在叢集建立後新增不同的執行個體類型，您可以新增額外的任務執行個體群組。您可以選擇適用於每個執行個體群組的不同執行個體類型與購買選項。如需詳細資訊，請參閱[使用 Amazon EMR 叢集擴展來調整不斷變化的工作負載](emr-scale-on-demand.md)。

在啟動執行個體時，隨需執行個體的容量保留偏好設定會預設為 `open`，可讓它在任何具有相符屬性 (執行個體類型、平台、可用區域) 的開放容量保留中執行。如需有關隨需容量保留的詳細資訊，請參閱 [在 Amazon EMR 中對執行個體機群使用容量保留](on-demand-capacity-reservations.md)。

這個區段涵蓋建立含統一執行個體群組的叢集。如需透過手動新增或移除執行個體或透過自動擴展來修改現有執行個體群組的更多資訊，請參閱 [管理 Amazon EMR 叢集](emr-manage.md)。

## 使用主控台設定統一執行個體群組
<a name="emr-uniform-instance-group-console"></a>

------
#### [ Console ]

**使用新主控台建立具有執行個體群組的叢集**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) 開啟 Amazon EMR 主控台。

1. 在左側導覽窗格中的 **EC2 上的 EMR** 下，選擇**叢集**，然後選擇**建立叢集**。

1. 在**叢集組態**下，選擇**執行個體群組**。

1. 在**節點群組**下，每種類型的節點群組都有一個區段。對於主節點群組，如果您想要有 3 個主節點，請選取**使用多個主節點**核取方塊。如果您想要使用「Spot 購買」，請選取**使用 Spot 購買選項**核取方塊。

1. 對於主節點和核心節點群組，請選取**新增執行個體類型**，然後選擇最多 5 個執行個體類型。對於任務群組，請選取**新增執行個體類型**，然後選擇最多 15 個執行個體類型。Amazon EMR 在啟動叢集時，可以佈建這些執行個體類型的任何混合。

1. 在每個節點群組類型下，選擇每個執行個體旁邊的**動作**下拉式功能表，以變更以下設定：  
**新增 EBS 磁碟區**  
在 Amazon EMR 佈建之後，指定 EBS 磁碟區以附接至執行個體類型。  
**編輯 Spot 價格上限**  
為機群中的每種執行個體類型指定最高 Spot 價格。您可以依隨需價格的百分比或特定的金額來設定此價格。如果可用區域中的目前 Spot 價格低於您的最大 Spot 價格，則 Amazon EMR 會佈建 Spot 執行個體。您僅需支付該 Spot 價格。

1. 您還可以選擇展開**節點組態**以輸入 JSON 組態，或從 Amazon S3 載入 JSON。

1. 選擇適用於您的叢集的任何其他選項。

1. 若要啟動您的叢集，請選擇**建立叢集**。

------

## 使用 AWS CLI 建立具有統一執行個體群組的叢集
<a name="emr-uniform-instance-group-cli"></a>

若要使用 AWS CLI指定叢集的執行個體群組組態，請使用 `create-cluster` 命令和 `--instance-groups` 參數。Amazon EMR 會假設使用隨需執行個體選項，除非您為執行個體群組指定 `BidPrice` 引數。如需 `create-cluster` 命令的範例，該命令會啟動含隨需執行個體的統一執行個體群組與各種叢集選項，請在命令列中鍵入 `aws emr create-cluster help ` 或參閱《AWS CLI 命令參考》**中的 [create-cluster](https://docs.aws.amazon.com/cli/latest/reference/emr/create-cluster.html)。

您可以使用 AWS CLI 在使用 Spot 執行個體的叢集中建立統一執行個體群組。提供的 Spot 價格取決於可用區域。當您使用 CLI 或 API，您可以透過 `AvailabilityZone` 引數 (如果您使用的是 EC2-classic 網路) 或 `--ec2-attributes ` 參數的 `SubnetID ` 引數來指定可用區域。您選擇的可用區域或子網路會套用至叢集，因此會將其用於所有執行個體群組。如果未明確指定可用區域或子網路，Amazon EMR 會在啟動叢集時選取 Spot 價格最低的可用區域。

以下範例示範 `create-cluster` 命令，該命令會建立主要、核心和兩個任務執行個體群組，而這些群組都使用 Spot 執行個體。將 {{myKey}} 取代為 Amazon EC2 金鑰對名稱。

**注意**  
包含 Linux 行接續字元 (\\) 是為了提高可讀性。它們可以在 Linux 命令中移除或使用。對於 Windows，請將其移除或取代為插入符號 (^)。

```
aws emr create-cluster --name "{{MySpotCluster}}" \
  --release-label {{emr-7.13.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。例如，您可以使用 x86\_64 架構自訂 AMI 來設定 m5.xlarge 執行個體類型，使用對應 `AWS AARCH64` (ARM) 架構自訂 AMI 設定 m6g.xlarge 執行個體類型。

下列範例顯示了使用兩種執行個體類型建立的統一執行個體群組叢集，每個類型都有自己的自訂 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 來建立執行個體群組
<a name="emr-instance-group-sdk"></a>

您會將 `InstanceGroupConfig` 物件個體化，該物件會指定叢集的執行個體群組組態。若要使用 Spot 執行個體，您會針對 `withBidPrice` 物件設定 `withMarket` 和 `InstanceGroupConfig` 屬性。下列程式碼顯示如何定義執行 Spot 執行個體的主要、核心和任務執行個體群組。

```
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");
```