

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

# 設定 Amazon EMR 叢集硬體和聯網
<a name="emr-plan-instances"></a>

當您建立 Amazon EMR 叢集時最重要考量為如何設定 Amazon EC2 執行個體和網路選項。本章涵蓋下列選項，並提供這些選項的[最佳實務和指導方針](emr-plan-instances-guidelines.md)。
+ **節點類型** – 系統會將 EMR 叢集中的 Amazon EC2 執行個體組織為*節點類型*。類型有三種：*主節點*、*核心節點*和*任務節點*。每個節點類型會執行一組在叢集上安裝的分散式應用程式所定義的角色。例如，在 Hadoop MapReduce 或 Spark 作業期間，在核心節點和作業節點上的元件會處理資料、將輸出傳輸到 Amazon S3 或 HDFS，並將狀態中繼資料傳回主節點。有了單一節點叢集，所有元件會在主節點上執行。如需詳細資訊，請參閱[了解 Amazon EMR 中的節點類型：主要節點、核心節點和任務節點](emr-master-core-task-nodes.md)。
+ **EC2 執行個體** – 建立叢集時，您可以選擇每種類型的節點將在其上執行的 Amazon EC2 執行個體。EC2 執行個體類型確定節點的處理和儲存設定檔。為節點選擇 Amazon EC2 執行個體非常重要，因為它可確定叢集中個別節點類型的效能設定檔。如需詳細資訊，請參閱[設定 Amazon EC2 執行個體類型以搭配 Amazon EMR 使用](emr-plan-ec2-instances.md)。
+ **聯網** – 您可以使用公有子網路、私有子網路或共用子網路在 VPC 中啟動 Amazon EMR 叢集。您的聯網組態決定了客戶和服務如何連接至叢集以執行工作、叢集如何連接至資料存放區和其他 AWS 資源，以及控制這些連線上流量的選項。如需詳細資訊，請參閱[在 Amazon EMR 的 VPC 中設定聯網](emr-plan-vpc-subnet.md)。
+ **執行個體分組** – 託管每種節點類型的 EC2 執行個體集合也稱為*執行個體機群*或*統一執行個體群組*。您可以在建立叢集時選擇執行個體分組組態。此選項確定如何在叢集執行時將節點新增至叢集。此組態適用於所有節點類型。您無法在稍後進行變更。如需詳細資訊，請參閱[使用執行個體機群或統一執行個體群組建立 Amazon EMR 叢集](emr-instance-group-configuration.md)。
**注意**  
執行個體機群組態只能在 Amazon EMR 4.8.0 版及更新版本 (不含 5.0.0 和 5.0.3 版) 中使用。

# 了解 Amazon EMR 中的節點類型：主要節點、核心節點和任務節點
<a name="emr-master-core-task-nodes"></a>

您可以透過本章節了解 Amazon EMR 如何使用這些節點類型並作為叢集容量規劃的基礎。

## 主節點
<a name="emr-plan-master"></a>

主節點會管理叢集且通常會執行分散式應用程式的主要元件。例如，主節點執行 YARN ResourceManager 服務來管理應用程式的資源。主節點還會執行 HDFS NameNode 服務，追蹤提交至叢集的作業狀態，並監控執行個體群組的運作狀態。

您能夠以 Hadoop 使用者的身分透過 SSH 連接至主節點，藉此監控叢集進度並直接與應用程式互動。如需詳細資訊，請參閱[使用 SSH 連線至 Amazon EMR 叢集主節點](emr-connect-master-node-ssh.md)。連接至主節點可讓您直接存取目錄和檔案，例如 Hadoop 日誌檔案。如需詳細資訊，請參閱[檢視 Amazon EMR 日誌檔案](emr-manage-view-web-log-files.md)。您也可以檢視當網站在主節點上執行時應用程式發布的使用者介面。如需詳細資訊，請參閱[檢視 Amazon EMR 叢集上託管的 Web 介面](emr-web-interfaces.md)。

**注意**  
在 Amazon EMR 5.23.0 版及更新版本中，您可以啟動具有三個主節點的叢集，以支援 YARN Resource Manager、HDFS NameNode、Spark、Hive 和 Ganglia 等應用程式的高可用性功能。主節點已不再是此功能潛在的單點故障。如果其中一個主節點故障，Amazon EMR 會自動容錯移轉至備用主節點，並以具有相同組態和引導操作的新主節點來更換故障主節點。如需詳細資訊，請參閱[規劃和設定主節點](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-ha.html)。

## 核心節點
<a name="emr-plan-core"></a>

核心節點由主節點管理。核心節點執行資料節點協助程式，以在 Hadoop 分散式檔案系統 (HDFS) 過程協調資料儲存。它們還對已安裝應用程式需要的資料執行任務追蹤器協助程式和執行其他平行運算任務。例如，核心節點執行 YARN NodeManager 協助程式、Hadoop MapReduce 任務和 Spark 執行者。

每個叢集只有一個核心執行個體群組或執行個體機群，但執行個體群組或執行個體機群中的多個 Amazon EC2 執行個體上可以執行多個節點。您可以透過執行個體群組，在叢集正在執行時新增和移除 Amazon EC2 執行個體。您也可以設定自動擴展，以根據指標的值新增執行個體。如需有關新增和移除 Amazon EC2 執行個體與執行個體群組組態的詳細資訊，請參閱 [使用 Amazon EMR 叢集擴展來調整不斷變化的工作負載](emr-scale-on-demand.md)。

您可以使用執行個體機群，透過隨需與 Spot 相應修改執行個體機群的*目標容量*，來有效地新增和移除執行個體。如需目標容量的詳細資訊，請參閱 [執行個體機群選項](emr-instance-fleet.md#emr-instance-fleet-options)。

**警告**  
從執行中的核心節點或移除 HDFS，或終止核心節點資料遺失的風險。設定核心節點使用 Spot 執行個體時必須小心。如需詳細資訊，請參閱[您應何時使用 Spot 執行個體？](emr-plan-instances-guidelines.md#emr-plan-spot-instances)。

## 任務節點
<a name="emr-plan-task"></a>

您可以使用任務節點來新增對資料執行平行運算任務的能力，例如 Hadoop MapReduce 任務和 Spark 執行程式。任務節點不執行資料節點協助程式，也不會將資料存放在 HDFS 中。您可以使用核心節點，透過將 Amazon EC2 執行個體新增至現有統一執行個體群組，或修改任務執行個體機群的目標容量來將任務節點新增至叢集。

透過統一執行個體群組組態，您總計最多可有 48 個任務執行個體群組。以此種方式新增執行個體群組的功能可讓您混合 Amazon EC2 執行個體類型和定價選項，例如隨需執行個體和 Spot 執行個體。這讓您能夠以符合成本效益的方式靈活地回應工作負載需求。

透過執行個體機群組態，混合執行個體類型和購買選項的功能是內建的，所以只有一個任務執行個體機群。

由於 Spot 執行個體通常用於執行作業節點，因此 Amazon EMR 具有排程 YARN 作業的預設功能，因此當 Spot 執行個體上執行的作業節點終止時，執行作業不會失敗。Amazon EMR 透過允許應用程式主程序僅在核心節點上執行來達到此目的。應用程式主程序會控制執行中的作業，而且需要在作業生命週期內保持活動狀態。

Amazon EMR 5.19.0 版及更新版本使用內建 [YARN 節點標籤](https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/NodeLabel.html)功能來實現此目的。(較早版本使用代碼修補程式)。預設會設定 `yarn-site` 和 `capacity-scheduler` 組態分類中的屬性，以便 YARN capacity-scheduler 和 fair-scheduler 利用節點標籤。Amazon EMR 會自動為核心節點加上 `CORE` 標籤，並設定屬性，以便只在具有 CORE 標籤的節點上排程應用程式主節點。手動修改 yarn-site 和 capacity-scheduler 組態分類中的相關屬性，或直接修改關聯的 XML 檔案中的相關屬性，可能會破壞此功能或修改此功能。

從 Amazon EMR 6.x 版系列開始，YARN 節點標籤功能已預設為停用。依預設，應用程式主程序可以在核心和任務節點上執行。您可以透過設定以下屬性來啟用 YARN 節點標籤功能：
+ `yarn.node-labels.enabled: true`
+ `yarn.node-labels.am.default-node-label-expression: 'CORE'`

從 Amazon EMR 7.x 發行系列開始，Amazon EMR 會依其市場類型將 YARN 節點標籤指派給執行個體，例如隨需或 Spot。您可以設定下列屬性來啟用節點標籤，並將應用程式程序限制為 ON\$1DEMAND：

```
yarn.node-labels.enabled: true
yarn.node-labels.am.default-node-label-expression: 'ON_DEMAND'
```

如果您使用的是 Amazon EMR 7.0 或更高版本，您可以使用下列組態，將應用程式程序限制為具有 `CORE`標籤的節點：

```
yarn.node-labels.enabled: true
yarn.node-labels.am.default-node-label-expression: 'CORE'
```

對於 Amazon EMR 7.2 版及更高版本，如果您的叢集使用受管擴展搭配節點標籤，Amazon EMR 將嘗試根據應用程式程序和執行器需求獨立擴展叢集。

例如，如果您使用 Amazon EMR 7.2 版或更新版本，並將應用程式程序限制為`ON_DEMAND`節點，則受管擴展會在應用程式程序需求增加時擴展`ON_DEMAND`節點。同樣地，如果您將應用程式程序限制為`CORE`節點，則受管擴展會在應用程式程序需求增加時擴展`CORE`節點。

如需特定屬性的資訊，請參閱 [Amazon EMR 設定可避免由於任務節點 Spot 執行個體終止而造成的作業失敗](emr-plan-instances-guidelines.md#emr-plan-spot-YARN)。

# 設定 Amazon EC2 執行個體類型以搭配 Amazon EMR 使用
<a name="emr-plan-ec2-instances"></a>

EC2 執行個體提供不同的組態，稱為*執行個體類型*。執行個體類型具有不同的 CPU、輸入/輸出和儲存容量。除了執行個體類型以外，您可以選擇適用於 Amazon EC2 執行個體的不同購買選項。您可以在統一執行個體群組或執行個體機群內指定不同的執行個體類型和購買選項。如需詳細資訊，請參閱[使用執行個體機群或統一執行個體群組建立 Amazon EMR 叢集](emr-instance-group-configuration.md)。如需有關為應用程式選擇執行個體類型和購買選項的指引，請參閱 [設定 Spot 執行個體的 Amazon EMR 叢集執行個體類型和最佳實務](emr-plan-instances-guidelines.md)。

**重要**  
當您使用 選擇執行個體類型時 AWS 管理主控台，每個**執行個體類型**顯示的 **vCPU** 數量是該執行個體類型的 YARN vcore 數量，而不是該執行個體類型的 EC2 vCPUs 數量。如需有關每種執行個體類型的 vCPU 數量的詳細資訊，請參閱 [Amazon EC2 執行個體類型](https://aws.amazon.com/ec2/instance-types/)。

**Topics**
+ [Amazon EMR 支援的執行個體類型](emr-supported-instance-types.md)
+ [在 Amazon EMR 的 VPC 中設定聯網](emr-plan-vpc-subnet.md)
+ [使用執行個體機群或統一執行個體群組建立 Amazon EMR 叢集](emr-instance-group-configuration.md)

# Amazon EMR 支援的執行個體類型
<a name="emr-supported-instance-types"></a>

本章節描述了 Amazon EMR 支援的執行個體類型 (依 AWS 區域組織)。若要進一步了解執行個體類型，請參閱 [Amazon EC2 執行個體](https://aws.amazon.com/ec2/instance-types/)和 [Amazon Linux AMI 執行個體類型矩陣](https://aws.amazon.com/amazon-linux-ami/instance-type-matrix/)。

並非所有執行個體類型都可以在所有區域中使用，而且執行個體可用性視指定區域和可用區域中的可用性和需求而定。執行個體的可用區域取決於您於來啟動叢集的子網路。

## 考量事項
<a name="emr-supported-instance-types-considerations"></a>

為 Amazon EMR 叢集選擇執行個體類型時，請考慮下列事項。

**重要**  
當您使用 選擇執行個體類型時 AWS 管理主控台，每個**執行個體類型**顯示的 **vCPU** 數量是該執行個體類型的 YARN vcore 數量，而不是該執行個體類型的 EC2 vCPUs 數量。如需有關每種執行個體類型的 vCPU 數量的詳細資訊，請參閱 [Amazon EC2 執行個體類型](https://aws.amazon.com/ec2/instance-types/)。
+ 如果您使用指定的區域和可用區域中不可用的執行個體類型來建立叢集，您的叢集佈建可能會失敗，或停滯不前。如需有關執行個體可用性的資訊，請參閱 [Amazon EMR 定價頁面](https://aws.amazon.com/emr/pricing)或參閱此頁面上的 [支援的執行個體類型 AWS 區域](#emr-instance-types-by-region) 資料表。
+ 從 Amazon EMR 發行版本 5.13.0 開始，所有執行個體都會將 HVM 虛擬化和 EBS 支援的儲存用於根磁碟區。當您使用的 Amazon EMR 發行版本早於 5.13.0 之前，某些上一代執行個體會使用 PVM 虛擬化。如需詳細資訊，請參閱 [Linux AMI 虛擬化類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html)。
+ 由於缺乏硬體支援和可能導致記憶體和核心使用率過低的預設設定，`i4i.24xlarge`如果您執行低於 5.36.1 和 6.10.0 的 Amazon EMR 版本`i4i.12xlarge`，我們不建議您使用執行個體類型 `c7a`、、、、`c7i``m7i``m7i-flex``r7a``r7i`、`r7iz`、、、。如果您在這些版本中執行這些執行個體類型，可能會體驗到較低的效能，而且不會看到較新執行個體類型的預期優點，例如 `c7i` 與 `c6i`。為了使用這些效能類型獲得最佳的資源使用率和效能，您應該執行 5.36.1 和更高版本或 6.10.0 和更高版本，以最大化其功能。
+ 有些執行個體類型支援增強型聯網。如需詳細資訊，請參閱 [Linux 上增強的聯網功能](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html)。
+ NVIDIA 和 CUDA 驅動程式預設會安裝在 GPU 執行個體類型。

## 支援的執行個體類型 AWS 區域
<a name="emr-instance-types-by-region"></a>

下表列出 Amazon EMR 支援的 Amazon EC2 執行個體類型，由 組織 AWS 區域。這些表格還列出了支援每種執行個體類型的 5.x、6.x 和 7.x 系列中最早的 Amazon EMR 版本。

### 美國東部 (維吉尼亞北部) – us-east-1
<a name="us-east-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 美國東部 (俄亥俄) - us-east-2
<a name="us-east-2-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 美國西部 (加利佛尼亞北部) – us-west-1
<a name="us-west-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 美國西部 (奧勒岡) - us-west-2
<a name="us-west-2-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### AWS GovCloud （美國西部） - us-gov-west-1
<a name="us-gov-west-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### AWS GovCloud （美國東部） - us-gov-east-1
<a name="us-gov-east-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 非洲 (開普敦) – af-south-1
<a name="af-south-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 亞太區域 (香港) – ap-east-1
<a name="ap-east-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 亞太區域 (雅加達) – ap-southeast-3
<a name="ap-southeast-3-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 亞太區域 （墨爾本） - ap-southeast-4
<a name="ap-southeast-4-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 亞太區域 （馬來西亞） - ap-southeast-5
<a name="ap-southeast-5-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 亞太區域 (孟買) – ap-south-1
<a name="ap-south-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 亞太區域 (海德拉巴) – ap-south-2
<a name="ap-south-2-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 亞太區域 (大阪) - ap-northeast-3
<a name="ap-northeast-3-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 亞太區域 (首爾) – ap-northeast-2
<a name="ap-northeast-2-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 亞太區域 (新加坡) – ap-southeast-1
<a name="ap-southeast-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 亞太區域 (雪梨) – ap-southeast-2
<a name="ap-southeast-2-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 亞太區域 (東京) – ap-northeast-1
<a name="ap-northeast-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 加拿大 (中部) – ca-central-1
<a name="ca-central-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 加拿大西部 (卡加利) - ca-west-1
<a name="ca-west-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 中國 (寧夏) – cn-northwest-1
<a name="cn-northwest-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 中國 (北京) – cn-north-1
<a name="cn-north-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 歐洲 (法蘭克福) – eu-central-1
<a name="eu-central-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 歐洲 (蘇黎世) – eu-central-2
<a name="eu-central-2-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 歐洲 (愛爾蘭) – eu-west-1
<a name="eu-west-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 歐洲 (倫敦) – eu-west-2
<a name="eu-west-2-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 歐洲 (米蘭) – eu-south-1
<a name="eu-south-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 歐洲 (西班牙) – eu-south-2
<a name="eu-south-2-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 歐洲 (巴黎) – eu-west-3
<a name="eu-west-3-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 歐洲 (斯德哥爾摩) – eu-north-1
<a name="eu-north-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 以色列 （特拉維夫） - il-central-1
<a name="il-central-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 中東 (巴林) – me-south-1
<a name="me-south-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 中東 (阿拉伯聯合大公國) – me-central-1
<a name="me-central-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 南美洲 (聖保羅) – sa-east-1
<a name="sa-east-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 亞太區域 （泰國） - ap-southeast-7
<a name="ap-southeast-7-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 墨西哥 （中部） - mx-central-1
<a name="mx-central-1-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 亞太區域 （台北） - ap-east-2
<a name="ap-east-2-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

### 亞太區域 （紐西蘭） - ap-southeast-6
<a name="ap-southeast-6-supported-instances"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-supported-instance-types.html)

## 上一代執行個體
<a name="emr-supported-instance-types-previous-generation"></a>

Amazon EMR 支援上一代執行個體來支援為這些執行個體優化但尚未升級的應用程式。如需最這些執行個體類型和升級路徑的詳細資訊，請參閱[上一代執行個體](https://aws.amazon.com/ec2/previous-generation)。


| 執行個體類別 | 執行個體類型 | 
| --- | --- | 
|  General Purpose  |  m1.small¹ \$1 m1.medium¹ \$1 m1.large¹ \$1 m1.xlarge¹ \$1 m3.xlarge¹ \$1 m3.2xlarge¹ \$1 m4.large \$1 m4.xlarge \$1 m4.2xlarge \$1 m4.4xlarge \$1 m4.10xlarge \$1 m4.16xlarge  | 
|  Compute Optimized  |  c1.medium¹ ² \$1 c1.xlarge¹ \$1 c3.xlarge¹ \$1 c3.2xlarge¹ \$1 c3.4xlarge¹ \$1 c3.8xlarge¹ \$1 c4.large \$1 c4.xlarge \$1 c4.2xlarge \$1 c4.4xlarge \$1 c4.8xlarge  | 
|  Memory Optimized  |  m2.xlarge¹ \$1 m2.2xlarge¹ \$1 m2.4xlarge¹ \$1 r3.xlarge \$1 r3.2xlarge \$1 r3.4xlarge \$1 r3.8xlarge \$1 r4.xlarge \$1 r4.2xlarge \$1 r4.4xlarge \$1 r4.8xlarge \$1 r4.16xlarge  | 
|  Storage Optimized  |  d2.xlarge \$1 d2.2xlarge \$1 d2.4xlarge \$1 d2.8xlarge \$1 i2.xlarge \$1 i2.2xlarge \$1 i2.4xlarge \$1 i2.8xlarge  | 

¹ 使用 PVM 虛擬化 AMI 與 5.13.0 以前的 Amazon EMR 發行版本。如需詳細資訊，請參閱 [Linux AMI 虛擬化類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html)。

² 不支援 5.15.0 發行版本。

# Amazon EMR 中的執行個體購買選項
<a name="emr-instance-purchasing-options"></a>

當您設定叢集時，您可以選擇適用於 Amazon EC2 執行個體的購買選項。您可以選擇隨需執行個體、Spot 執行個體或兩者。價格因執行個體類型和區域而異。Amazon EMR 價格不包括 Amazon EC2 價格 (基礎伺服器的價格) 和 Amazon EBS 價格 (如果附接 Amazon EBS 磁碟區)。如需目前定價資訊，請參閱 [Amazon EMR 定價](https://aws.amazon.com/emr/pricing)。

您在您的叢集中選擇使用執行個體群組或執行個體機群，決定叢集執行時您可如何變更執行個體的購買選項。如果選擇統一執行個體群組，您只能在建立執行個體群組時為其指定購買選項，而且執行個體類型和購買選項適用於每個執行個體群組中的所有 Amazon EC2 執行個體。如果您選擇執行個體機群，您可以在建立執行個體機群後變更購買選項，而且您可以混合購買選項，以滿足您指定的目標容量。如需這些組態的詳細資訊，請參閱 [使用執行個體機群或統一執行個體群組建立 Amazon EMR 叢集](emr-instance-group-configuration.md)。

## 隨需執行個體
<a name="emr-instances-on-demand"></a>

使用隨需執行個體，您只需要按秒支付運算容量開銷。或者，您可以讓這些隨需執行個體使用預留執行個體或專用執行個體購買選項。透過預留執行個體，您可以為執行個體進行一次性支付以預留容量。專用執行個體在主機硬體層級與屬於其他 AWS 帳戶的執行個體實體隔離。如需購買選項的詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[執行個體購買選項](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-purchasing-options.html)。

### 使用預留執行個體
<a name="emr-instances-reserved"></a>

若要在 Amazon EMR 中使用預留執行個體，您可以使用 Amazon EC2 來購買預留執行個體，並指定保留的參數 (包括適用於區域或可用區域的預留範圍)。如需詳細資訊，請參閱[《Amazon EC2 使用者指南》中的 Amazon EC2 預留執行個體](https://aws.amazon.com/ec2/reserved-instances/)和[購買預留執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-concepts-buying.html)。 *Amazon EC2 * 在您購買預留執行個體後，如果下列所有條件為 True，Amazon EMR 會在叢集啟動時使用預留執行個體：
+ 系統會在符合預留執行個體規格的叢集組態中指定隨需執行個體。
+ 會在執行個體保留的範圍內 (可用區域或區域) 啟動該叢集。
+ 預留執行個體的容量仍可供使用

例如，假設您購買一個美國東部區域範圍內執行個體保留中的 `m5.xlarge` 預留執行個體。然後，在使用兩個 `m5.xlarge` 執行個體的美國東部中啟動 Amazon EMR 叢集。第一種執行個體會按照預留執行個體的費率來計費，另一種則是會按照隨需執行個體的費率來計費。在任何隨需執行個體建立前已使用預留執行個體容量。

### 使用專用執行個體
<a name="emr-dedicated-instances"></a>

若要使用專用執行個體，您會使用 Amazon EC2 購買專用執行個體，然後使用**專用**租用屬性來建立 VPC。接著在 Amazon EMR 內指定叢集應在此 VPC 中啟動。在符合專用執行個體規格相之叢集中的任何隨需執行個體使用叢集啟動時可用的專用執行個體。

**注意**  
Amazon EMR 不支援在個別執行個體上設定 `dedicated` 屬性。

## Spot 執行個體
<a name="emr-spot-instances"></a>

Amazon EMR 中的 Spot 執行個體為您提供以降價的方式 (與隨需購買相比) 購買 Amazon EC2 執行個體容量的選項。使用 Spot 執行個體的缺點是，如果正在執行的執行個體類型無法使用 Spot 容量，執行個體可能會終止。如需對於您的應用程式何時適合使用 Spot 執行個體的詳細資訊，請參閱 [您應何時使用 Spot 執行個體？](emr-plan-instances-guidelines.md#emr-plan-spot-instances)。

當 Amazon EC2 有未使用的容量時，它會以降價的方式提供 EC2 執行個體，稱為 *Spot 價格*。此價格是根據可用性和需求而有所變化，以及根據區域和可用區域而訂定。當您選擇 Spot 執行個體時，您只需要指定您願意為每個 EC2 執行個體類型支付的 Spot 價格上限。當叢集的可用區域中 Spot 價格低於為執行個體類型指定的 Spot 價格上限，該執行個體即會啟動。執行個體執行時，會根據目前 Spot 價格來向您收費，*而非您的 Spot 價格上限*。

**注意**  
從 2021 年 7 月 1 日起，具有定義期間的 Spot 執行個體 (也稱為 Spot 區塊) 不再提供給新客戶。對於先前使用過此功能的客戶，在 2022 年 12 月 31 日之前，我們將繼續支援具有指定期間的 Spot 執行個體。

如需目前定價，請參閱 [Amazon EC2 Spot 執行個體定價](https://aws.amazon.com/ec2/spot/pricing/)。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[Spot 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html)。當您建立和設定叢集時，您會指定網路選項，其最終會在叢集啟動時判斷可用區域。如需詳細資訊，請參閱[在 Amazon EMR 的 VPC 中設定聯網](emr-plan-vpc-subnet.md)。

**提示**  
在您使用**進階選項**建立叢集時，將滑鼠游標移至 **Spot** 購買選項旁的資訊工具提示上，即可在主控台中看到即時 Spot 價格。系統即會顯示所選區域中每個可用區域的價格。最低價格即為綠色列。由於可用區域間的 Spot 價格會不斷波動，若選擇搭配最低初始價格的可用區域在叢集的生命週期中可能不會產生最低的價格。對於最佳結果，研究可用區域定價的歷史記錄，再進行選擇。如需詳細資訊，請參閱《*Amazon EC2 使用者指南》中的* [Spot 執行個體定價歷史記錄](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances-history.html)。

Spot 執行個體選項取決於您在叢集組態中使用的是統一執行個體群組或執行個體機群。

****統一執行個體群組中的 Spot 執行個體****  
當您在統一執行個體群組中使用 Spot 執行個體時，執行個體群組中的所有執行個體必須是 Spot 執行個體。您可以為叢集指定子網路或可用區域。對於每個執行個體群組，您會指定單一 Spot 執行個體和 Spot 價格上限。當叢集的區域和可用區域中 Spot 價格低於 Spot 價格上限，該類型的 Spot 執行個體即會啟動。如果 Spot 價格超過 Spot 價格上限，執行個體即會終止。您只會在設定執行個體群組時設定 Spot 價格上限。您無法在稍後進行變更。如需詳細資訊，請參閱[使用執行個體機群或統一執行個體群組建立 Amazon EMR 叢集](emr-instance-group-configuration.md)。

****執行個體機群中的 Spot 執行個體****  
當您使用執行個體機群組態，額外的選項可讓您進一步控制 Spot 執行個體 (Spot Instance) 啟動和終止的方式。基本上，執行個體機群是使用非統一執行個體群組的方法來啟動執行個體。它的運作方式是為 Spot 執行個體 (和隨需執行個體) 和高達 5 個執行個體類型建立*目標容量*。您也可以為每個執行個體類型指定*加權容量*或使用執行個體類型的 vCPU (YARN vcores) 做為加權容量。在佈建該類型的執行個體時此加權容量會計入您的目標容量。Amazon EMR 會透過兩種購買選項來佈建執行個體，直到每個目標的目標容量都履行為止。此外，您可以為 Amazon EMR 定義在啟動執行個體時可從中選擇的各種可用區域。您也為每個機群提供額外的 Spot 選項，包括佈建逾時。如需詳細資訊，請參閱[為您的 Amazon EMR 叢集規劃和設定執行個體機群](emr-instance-fleet.md)。

# Amazon EMR 中的執行個體儲存選項和行為
<a name="emr-plan-storage"></a>

## 概觀
<a name="emr-plan-storage-ebs-storage-overview"></a>

執行個體儲存體和 Amazon EBS 磁碟區儲存空間用於 HDFS 資料，以及緩衝區、快取、暫存資料及其他暫時內容，一些應用程式可能會將這些內容「溢寫」至本機檔案系統。

Amazon EBS 在 Amazon EMR 內的運作方式與在一般 Amazon EC2 執行個體中不同。連接至 Amazon EMR 叢集的 Amazon EBS 磁碟區是暫時性的：這些磁碟區會在叢集和執行個體終止時 (例如，當執行個體群組遭到縮減時) 即刪除，因此您不應預期資料會持續保留。雖然資料是暫時性的，但您可以根據叢集中的節點數量和專門程度來複寫 HDFS 中的資料。當您新增 Amazon EBS 儲存磁碟區時，會將這些磁碟區掛載為其他磁碟區。他們不是開機磁碟區的一部分。YARN 設定為使用所有其他磁碟區，但您需負責分配額外的磁碟區作為本機儲存 (例如用於本機日誌檔案)。

## 考量事項
<a name="emr-plan-storage-ebs-storage-considerations"></a>

將 Amazon EBS 與 EMR 叢集搭配使用時，請記住這些額外的考量事項：
+ 您無法對 Amazon EBS 磁碟區進行快照，然後在 Amazon EMR 內將其還原。若要建立可重複使用的自訂組態，請使用自訂 AMI (在 Amazon EMR 5.7.0 版和更新版本中可供使用)。如需詳細資訊，請參閱[使用自訂 AMI 為 Amazon EMR 叢集組態提供更多彈性](emr-custom-ami.md)。
+ 只在使用自訂 AMI 時才支援加密的 Amazon EBS 根裝置磁碟區。如需詳細資訊，請參閱[建立具有加密 Amazon EBS 根裝置磁碟區的自訂 AMI](emr-custom-ami.md#emr-custom-ami-encrypted)。
+ 如果您使用 Amazon EMR API 套用標籤，會將這些操作套用至 EBS 磁碟區。
+ 每個執行個體的磁碟區限制為 25。
+ 核心節點上的 Amazon EBS 磁碟區不能小於 5 GB。
+ Amazon EBS 每個執行個體啟動請求的固定限制為 2，500 個 EBS 磁碟區。此限制也適用於 EC2 叢集上的 Amazon EMR。我們建議您啟動具有在此限制內 EBS 磁碟區總數的叢集，然後視需要手動擴展叢集或 Amazon EMR 受管擴展。若要進一步了解 EBS 磁碟區限制，請參閱[服務配額](https://docs.aws.amazon.com/general/latest/gr/ebs-service.html#limits_ebs:~:text=Amazon%20EBS%20has,exceeding%20the%20limit.)。

## 執行個體的預設 Amazon EBS 儲存體
<a name="emr-plan-storage-ebs-storage-default"></a>

對於具有僅限 EBS 儲存的 EC2 執行個體，Amazon EMR 會將 Amazon EBS gp2 或 gp3 儲存磁碟區分配給執行個體。當您使用 Amazon EMR 5.22.0 版及更高版本建立叢集時，預設 Amazon EBS 儲存量相對於執行個體的大小會增加。

我們將任何增加的儲存空間分配至多個磁碟區。如此可提升 IOPS 效能，進而提升某些標準化工作負載的效能。如果想要使用不同的 Amazon EBS 執行個體儲存組態，您可以在建立 EMR 叢集或將節點新增至現有叢集時加以指定。您可將 Amazon EBS gp2 或 gp3 磁碟區作為根磁碟區，並將 gp2 或 gp3 磁碟區新增為其他磁碟區。如需詳細資訊，請參閱[指定其他 EBS 儲存磁碟區](#emr-plan-storage-additional-ebs-volumes)。

下表識別每種執行個體類型的預設 Amazon EBS gp2 儲存磁碟區數量、大小和總大小。如需有關 gp2 磁碟區與 gp3 的比較資訊，請參閱 [比較 Amazon EBS 磁碟區類型 gp2 和 gp3](emr-plan-storage-compare-volume-types.md)。


**Amazon EMR 5.22.0 及更高版本中執行個體類型的預設 Amazon EBS gp2 儲存磁碟區和大小**  

| 執行個體大小 | 磁碟區數目 | 磁碟區大小 (GiB) | 大小總計 (GiB) | 
| --- | --- | --- | --- | 
|  \$1.large  |  1  |  32  |  32  | 
|  \$1.xlarge  |  2  |  32  |  64  | 
|  \$1.2xlarge  |  4  |  32  |  128  | 
|  \$1.4xlarge  |  4  |  64  |  256  | 
|  \$1.8xlarge  |  4  |  128  |  512  | 
|  9xlarge  |  4  |  144  |  576  | 
|  10xlarge  |  4  |  160  |  640  | 
|  12xlarge  |  4  |  192  |  768  | 
|  \$1.16xlarge  |  4  |  256  |  1024  | 
|  18xlarge  |  4  |  288  |  1152  | 
|  24xlarge  |  4  |  384  |  1536  | 

## 執行個體的預設 Amazon EBS 根磁碟區
<a name="emr-plan-storage-ebs-root-volume"></a>

使用 Amazon EMR 6.15 版及更高版本時，Amazon EMR 會為其 AMI 自動連接 Amazon EBS 一般用途 SSD (gp3) 作為根裝置來增強效能。使用早期版本時，Amazon EMR 將 EBS 一般用途 SSD (gp2) 連接為根裝置。


|  | 6.15 及更高版本 | 6.14 及更低版本 | 
| --- | --- | --- | 
| 預設根磁碟區類型 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-plan-storage.html) | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-plan-storage.html) | 
| 預設大小 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-plan-storage.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-plan-storage.html)  | 
| 預設 IOPS |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-plan-storage.html)  |   | 
| 預設輸送量 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/emr-plan-storage.html)  |   | 

如需有關如何自訂 Amazon EBS 根裝置磁碟區的資訊，請參閱 [指定其他 EBS 儲存磁碟區](#emr-plan-storage-additional-ebs-volumes)。

## 指定其他 EBS 儲存磁碟區
<a name="emr-plan-storage-additional-ebs-volumes"></a>

在 Amazon EMR 中設定執行個體類型時，您可以指定額外的 EBS 磁碟區，以新增執行個體儲存體 (如果有) 和預設 EBS 磁碟區以外的容量。Amazon EBS 提供下列磁碟區類型：一般用途 (SSD)、佈建 IOPS (SSD)、輸送量優化 (HDD)、冷 (HDD) 和磁性磁碟區。它們各有不同的效能特性及價格，因此您可以根據應用程式的分析和商業需求來量身打造儲存空間。例如，有些應用程式可能需要溢寫至磁碟，而有些則可以在記憶體內或使用 Amazon S3 安全地運作。

您只能在叢集啟動時及在新增額外任務節點執行個體群組時，將 Amazon EBS 磁碟區附接至執行個體。如果 Amazon EMR 叢集中的執行個體發生故障，則會同時將執行個體以及附接的 Amazon EBS 磁碟區取代為新磁碟區。因此，如果您手動分離 Amazon EBS 磁碟區，Amazon EMR 會將該磁碟區視為故障，並同時取代執行個體儲存體 (如果適用) 和磁碟區存放區。

Amazon EMR 不允許您將現有 EMR 叢集的磁碟區類型從 gp2 修改為 gp3。若要將 gp3 用於您的工作負載，請啟動新的 EMR 叢集。此外，不建議您在使用中或佈建中的叢集上更新輸送量和 IOPS，因為 Amazon EMR 會針對在叢集縱向擴展期間新增的任何新執行個體使用您在叢集啟動時指定的輸送量和 IOPS 值。如需詳細資訊，請參閱[比較 Amazon EBS 磁碟區類型 gp2 和 gp3](emr-plan-storage-compare-volume-types.md)及[在遷移至 gp3 Amazon EBS 磁碟區類型時選取 IOPS 和輸送量](emr-plan-storage-gp3-migration-selection.md)。

**重要**  
若要將 gp3 磁碟區與 EMR 叢集搭配使用，您必須啟動新叢集。

# 比較 Amazon EBS 磁碟區類型 gp2 和 gp3
<a name="emr-plan-storage-compare-volume-types"></a>

以下是美國東部 (維吉尼亞北部) 區域中 gp2 與 gp3 磁碟區之間的成本比較。如需最新資訊，請參閱 [Amazon EBS 一般用途磁碟區](https://aws.amazon.com/ebs/general-purpose/)產品頁面和 [Amazon EBS 定價頁面](https://aws.amazon.com/ebs/pricing/)。


| 磁碟區類型 | gp3 | gp2 | 
| --- | --- | --- | 
| 磁碟區大小 | 1 GiB – 16 TiB | 1 GiB – 16 TiB | 
| 預設/基準 IOPS | 3000 | 3 IOPS/GiB (最少 100 個 IOPS) 至最多 16,000 個 IOPS。小於 1 TiB 的磁碟區也可以爆量至 3,000 個 IOPS。 | 
| 最大 IOPS/磁碟區 | 16,000 | 16,000 | 
| 預設/基準輸送量 | 125 MiB/s | 輸送量限制介於每秒 128 MiB 與每秒 250 MiB 之間，取決於磁碟區大小。 | 
| 最大輸送量/磁碟區 | 1,000 MiB/s | 250 MiB/s | 
| 價格 | 0.08 美元/GiB-月，免費 3,000 個 IOPS，超過 3,000 個 0.005 美元/佈建 IOPS-月；免費 125 MiB/秒，超過 125 MiB/秒 0.04 美元/佈建 MiB/秒-月 | 0.10 美元/GiB-月 | 

# 在遷移至 gp3 Amazon EBS 磁碟區類型時選取 IOPS 和輸送量
<a name="emr-plan-storage-gp3-migration-selection"></a>

佈建 gp2 磁碟區時，您必須計算磁碟區的大小，才能取得等比例的 IOPS 和輸送量。使用 gp3，您不必佈建更大的磁碟區即可取得更高效能。您可以根據應用程式需要選擇所需的大小和效能。選取合適的大小和正確的效能參數 (IOPS、輸送量) 可以在不影響效能的情況下最大限度地降低成本。

以下是協助您選取 gp3 組態選項的資料表：


| 磁碟區大小 | IOPS | 輸送量 | 
| --- | --- | --- | 
| 1–170 GiB | 3000 | 125 MiB/s | 
| 170–334 GiB | 3000 | 125 MiB/秒，如果選擇的 EC2 執行個體類型支援 125 MiB/秒或更低，則根據使用情況使用較高值，最大 250 MiB/秒\$1。 | 
| 334–1000 GiB | 3000 | 125 MiB/秒，如果選擇的 EC2 執行個體類型支援 125 MiB/秒或更低，則根據使用情況使用較高值，最大 250 MiB/秒\$1。 | 
| 1000\$1 GiB | 符合 gp2 IOPS (以 GiB 為單位的大小 x 3)，或目前 gp2 磁碟區驅動的最大 IOPS | 125 MiB/秒，如果選擇的 EC2 執行個體類型支援 125 MiB/秒或更低，則根據使用情況使用較高值，最大 250 MiB/秒\$1。 | 

\$1Gp3 能夠提供高達 2000 MiB/s 的輸送量。由於 gp2 提供最大 250 MiB/秒的輸送量，因此當您使用 gp3 時，您可能不需要超出此限制。Gp3 磁碟區提供 125 MiB/s 的一致基準輸送量效能，包含在儲存價格中。您可以為額外成本佈建額外的輸送量 （最高 2，000 MiB/s)，每個佈建 IOPS 的比率為 0.25 MiB/s。最大輸送量可佈建為 8，000 IOPS 或更高，以及 16 GiB 或更高 (8，000 IOPS × 0.25 MiB/s/s/IOPS = 2，000 MiB/s)。

# 在 Amazon EMR 的 VPC 中設定聯網
<a name="emr-plan-vpc-subnet"></a>

大多數叢集使用 Amazon Virtual Private Cloud (Amazon VPC) 在虛擬網路中啟動。VPC 是在您的帳戶 AWS 內 AWS 邏輯上隔離的隔離虛擬網路。您可以設定私有 IP 地址範圍、子網路、路由表和網路閘道等方面。如需詳細資訊，請參閱 [Amazon VPC 使用者指南](https://docs.aws.amazon.com/vpc/latest/userguide/)。

VPC 提供下列功能：
+ **處理敏感資料**

  在 VPC 中啟動叢集與使用其他工具 (例如路由表和網路 ACL) 在私有網路中啟動叢集類似，以定義可存取網路的人員。如果您正在處理的是叢集中的敏感資料，您可能需要在 VPC 中啟動叢集所提供的其他存取控制。此外，您可以選擇在私有子網路中啟動資源，其中這些資源都沒有直接的網際網路連線。
+ **透過內部網路存取資源**

  如果您的資料來源位於私有網路中，由於要傳輸的資料量或資料的敏感性質，將該資料上傳至 AWS 以匯入 Amazon EMR 可能並不切實際或不理想。但您可以在 VPC 中啟動叢集，並透過 VPN 將資料中心連接到 VPC，讓叢集可透過內部網路存取資源。例如，如果您在資料中心中有一個 Oracle 資料庫，在透過 VPN 連接到該網路的 VPC 中啟動叢集可讓叢集存取 Oracle 資料庫。

****公有和私有子網路****  
您可以同時在公有和私有 VPC 子網路中啟動 Amazon EMR 叢集。這表示您不需要網際網路連線才能執行 Amazon EMR 叢集；不過，您可能需要設定網路位址轉譯 (NAT) 和 VPN 閘道，才能存取位於 VPC 外部的 服務或資源，例如公司內部網路或公有 AWS 服務端點 AWS Key Management Service。

**重要**  
Amazon EMR 僅支援在發行版本 4.2 和更新版本中的私有子網路中啟動叢集。

如需 Amazon VPC 的詳細資訊，請參閱《Amazon VPC 使用者指南》[https://docs.aws.amazon.com/vpc/latest/userguide/](https://docs.aws.amazon.com/vpc/latest/userguide/)。

**Topics**
+ [啟動叢集時的 Amazon VPC 選項](emr-clusters-in-a-vpc.md)
+ [設定 VPC 以託管 Amazon EMR 叢集](emr-vpc-host-job-flows.md)
+ [使用 Amazon EMR 在 VPC 中啟動叢集](emr-vpc-launching-job-flows.md)
+ [存取 Amazon S3 的私有子網路的範例政策](private-subnet-iampolicy.md)
+ [了解 VPC 的更多資源](#emr-resources-about-vpcs)

# 啟動叢集時的 Amazon VPC 選項
<a name="emr-clusters-in-a-vpc"></a>



在 VPC 內啟動 Amazon EMR 叢集時，您可以公有、私有或共用子網路中啟動它。組態會有些微但顯著的差異，這取決於您為叢集選擇的子網路類型。

## 公有子網路
<a name="emr-vpc-public-subnet"></a>

在公有子網路中的 EMR 叢集需要連線網際網路閘道。這是因為 Amazon EMR 叢集必須存取 AWS 服務和 Amazon EMR。如果某服務 (例如 Amazon S3)，可讓您建立 VPC 端點，您可以使用該端點來存取那些服務，而不是透過網際網路閘道存取公有端點。此外，Amazon EMR 無法透過網路位址轉譯 (NAT) 裝置與公有子網路中的叢集通訊。若要達成此目的，則網際網路閘道是必要的，但您仍可以為在更為複雜案例中的其他流量使用 NAT 執行個體或閘道。

在叢集中的所有執行個體會透過 VPC 端點或網際網路閘道來連接至 Amazon S3。目前不支援 VPC 端點 AWS 的其他服務只會使用網際網路閘道。

如果您有不想連接到網際網路閘道的其他 AWS 資源，您可以在 VPC 內建立的私有子網路中啟動這些元件。

公有子網路中執行的叢集中會使用兩個安全群組：一個用於主節點，另一個用於核心節點和任務節點。如需詳細資訊，請參閱[使用 Amazon EMR 叢集的安全群組控制網路流量](emr-security-groups.md)。

下圖示範 Amazon EMR 叢集如何使用公有子網路在 VPC 中執行。叢集可以透過網際網路閘道連線至其他 AWS 資源，例如 Amazon S3 儲存貯體。

![\[VPC 上的叢集\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/images/vpc_default_v3a.png)


下圖示範如何設定 VPC，使該 VPC 中的叢集可以存取您自己網路中的資源 (例如 Oracle 資料庫)。

![\[設定 VPC 和叢集，以存取本機 VPN 資源\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/images/vpc_withVPN_v3a.png)


## 私有子網路
<a name="emr-vpc-private-subnet"></a>

私有子網路可讓您啟動 AWS 資源，而不需要子網路具有連接的網際網路閘道。Amazon EMR 支援使用發行版本 4.2.0 或更新版本在私有子網路中啟動叢集。

**注意**  
在私有子網路中設定 Amazon EMR 叢集時，建議您同時[為 Amazon S3 設定 VPC 端點](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html)。如果您的 EMR 叢集位於沒有 Amazon S3 VPC 端點的私有子網路中，則會產生與 S3 流量關聯的額外 NAT 閘道費用，因為 EMR 叢集與 S3 之間的流量不會保留在 VPC 內。

私有子網路與公有子網路在下列方面有所不同：
+ 若要存取未提供 VPC 端點 AWS 的服務，您仍然必須使用 NAT 執行個體或網際網路閘道。
+ 至少，您必須提供路由到 Amazon EMR 服務日誌儲存貯體和 Amazon S3 中的 Amazon Linux 儲存庫。如需詳細資訊，請參閱[存取 Amazon S3 的私有子網路的範例政策](private-subnet-iampolicy.md)
+ 如果您使用的是 EMRFS 功能，您需要有一個 Amazon S3 VPC 端點和從您的私有子網路到 DynamoDB 的路由。
+ 如果您提供的是從私有子網路到公有 Amazon SQS 端點的路由，偵錯才適用。
+ 僅支援使用 AWS 管理主控台透過在公有子網路中的 NAT 執行個體或閘道建立私有子網路組態。新增和設定 NAT 執行個體和 Amazon EMR 叢集的 Amazon S3 VPC 端點的最簡單方式是使用 Amazon EMR 主控台中的 **VPC 子網路清單**頁面。若要設定 NAT 閘道，請參閱《Amazon VPC 使用者指南》**中的 [NAT 閘道](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)。
+ 您無法將含現有 Amazon EMR 叢集的子網路從公有變更為私有，反之亦然。若要尋找私有子網路內的 Amazon EMR 叢集，必須在該私有子網路中啟動該叢集。

Amazon EMR 在私有子網路中為叢集建立和使用不同的預設安全群組：ElasticMapReduce-Master-Private、ElasticMapReduce-Slave-Private 和 ElasticMapReduce-ServiceAccess。如需詳細資訊，請參閱[使用 Amazon EMR 叢集的安全群組控制網路流量](emr-security-groups.md)。

如需叢集 NACL 的完整清單，請選擇 Amazon EMR 主控台**叢集詳細資訊**頁面上的**主叢集的安全群組**和**核心和任務的安全群組**。

下圖示範如何在私有子網路中設定 Amazon EMR 叢集。子網路以外的唯一通訊是 Amazon EMR。

![\[在私有子網路中啟動 Amazon EMR 叢集\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/images/vpc_with_private_subnet_v3a.png)


下圖示範在位於公有子網路連接到 NAT 執行個體之私有子網路中的 Amazon EMR 叢集範例組態。

![\[私有子網路與 NAT\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/images/vpc_private_subnet_nat_v3a.png)


## 共用子網路
<a name="emr-vpc-shared-subnet"></a>

VPC 共用可讓客戶與相同 AWS 組織內的其他 AWS 帳戶共用子網路。您可以在公有共用和私有共用子網路中啟動 Amazon EMR 叢集，但需注意以下幾點。

子網路擁有者必須與您共用子網路，才能在其中啟動 Amazon EMR 叢集。不過，共用子網路可於日後取消共用。如需詳細資訊，請參閱[使用共用 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-sharing.html)。在共用子網路中啟動叢集，而該共用子網路隨後取消共用，您可以在子網路未共用時，根據 Amazon EMR 叢集狀態遵守特定行為。
+ 叢集成功啟動「之前」**子網路未共用 - 如果擁有者在參與者啟動叢集的同時，停止共用 Amazon VPC 或子網路，叢集可能無法啟動或部分初始化而無需佈建所有請求的執行個體。
+ 叢集成功啟動「之後」**子網路未共用 - 當擁有者停止與參與者共用子網路或 Amazon VPC，參與者的叢集將無法調整以新增執行個體或取代運作狀態不佳的執行個體。

當您啟動 Amazon EMR 叢集時，會建立多個安全群組。在共用子網路中，子網路參與者控制這些安全群組。子網路擁有者可以查看這些安全群組，但無法執行任何動作。如果子網路擁有者想要移除或修改安全群組，建立安全群組的參與者必須採取動作。

## 使用 IAM 控制 VPC 許可
<a name="emr-iam-on-vpc"></a>

在預設情況下，所有 使用者可以查看帳戶的所有子網路，且任何使用者可以在任何子網路中啟動叢集。

當您在 VPC 中啟動叢集時，您可以使用 AWS Identity and Access Management (IAM) 控制對叢集的存取，並使用 政策限制動作，就像在 Amazon EC2 Classic 中啟動的叢集一樣。如需有關 IAM 的詳細資訊，請參閱 [IAM 使用者指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/)。

您也可以使用 IAM 來控制誰可以建立和管理子網路。例如，您可以建立 IAM 角色來管理子網路，以及可啟動叢集但無法修改 Amazon VPC 設定的第二個角色。如需在 Amazon EC2 和 Amazon VPC 中管理政策和動作的詳細資訊，請參閱《[Amazon EC2 使用者指南》中的 Amazon EC2 的 IAM 政策](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html)。 *Amazon EC2 * 

# 設定 VPC 以託管 Amazon EMR 叢集
<a name="emr-vpc-host-job-flows"></a>

您必須先建立 VPC 和子網路，然後才能在 VPC 中啟動叢集。對於公有子網路，您必須建立網際網路閘道並將它連接到子網路。下列指示描述了如何建立可以託管 Amazon EMR 叢集的 VPC。

**為 Amazon EMR 叢集建立具有子網路的 VPC**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在頁面的右上角，選擇適合您的 VPC 的 [AWS 區域](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html)。

1. 選擇**建立 VPC**。

1. 在 **VPC 設定**頁面上，選擇 **VPC 和更多**。

1. 在**自動產生名稱標籤**下，啟用**自動產生**並輸入 VPC 的名稱。這可協助您在建立 VPC 和子網路之後，在 Amazon VPC 主控台中識別 VPC 和子網路。

1. 在 **IPv4 CIDR 區塊**欄位中，為 VPC 使用私有 IP 地址空間，以確保適當的 DNS 主機名稱解析度；否則，您可能遭遇 Amazon EMR 叢集故障。這包括以下 IP 地址範圍：
   + 10.0.0.0 - 10.255.255.255
   + 172.16.0.0 - 172.31.255.255
   + 192.168.0.0 - 192.168.255.255

1. 在 **Number of Availability Zones (AZs)** (可用區域 (AZ) 數量) 中，選擇您要在其中啟動子網路的可用區域數量。

1. 在**公有子網路數量**中，選擇要新增至 VPC 的單一公有子網路。如果叢集使用的資料可在網際網路上使用 (例如，在 Amazon S3 或 Amazon RDS 中)，您只需使用公有子網路，而不需要新增私有子網路。

1. 在 **Number of private subnets** (私有子網路數量) 中，選擇您要新增至 VPC 的私人子網路數量。如果應用程式的資料儲存在您自己的網路中 (例如，在 Oracle 資料庫中)，請選取一或多個。對於私有子網路中的 VPC，所有 Amazon EC2 執行個體都必須擁有至少一個透過彈性網路介面對 Amazon EMR 的路由。在主控台中，我們將會自動為您設定。

1. 在 **NAT 閘道**下，選擇性地選擇新增 NAT 閘道。只有當您具有需要與網際網路通訊的私有子網路時，才需要使用這些閘道。

1. 在 **VPC 端點**下，選擇性地選擇將 Amazon S3 的端點新增至子網路。

1. 確認已勾選**啟用 DNS 主機名稱**和**啟用 DNS 解析**。如需詳細資訊，請參閱[以 VPC 使用 DNS](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html)。

1. 選擇**建立 VPC**。

1. 狀態視窗會顯示進行中的工作。工作完成時，選擇**檢視 VPC** 以導覽至**您的 VPC** 頁面，此頁面會顯示您的預設 VPC 和您剛建立的 VPC。您建立的 VPC 是非預設 VPC，因此 **Default VPC (預設 VPC)** 欄會顯示 **No (否)**。

1. 如果您要將 VPC 與不包含域名稱的 DNS 項目關聯，請導覽至 **DHCP 選項集**，選擇**建立 DHCP 選項集**，然後省略域名稱。建立選項集後，導覽至新的 VPC，在**動作**功能表下選擇**編輯 DHCP 選項集**，然後選取新的選項集。您不能在 DNS 選項設定建立後使用主控台來編輯網域名稱。

   這是一項 Hadoop 和相關應用程式的最佳實務，可確保節點完整網域名稱 (FQDN) 的解析度。若要確保適當的 DNS 解析度，您必須設定包含 DHCP 選項集的 VPC，且其參數設定為以下值：
   + **domain-name (domain-name)** = **ec2.internal**

     如果您的區域是美國東部 (維吉尼亞北部)，請使用 **ec2.internal**。對於其他區域，請使用 *region-name***.compute.internal**。如需 `us-west-2` 的範例，請使用 **us-west-2.compute.internal**。對於 AWS GovCloud (美國西部) 區域，請使用 **us-gov-west-1.compute.internal**。
   + **domain-name-servers (domain-name-servers)** = **AmazonProvidedDNS**

   如需詳細資訊，請參閱《Amazon VPC 使用者指南》**中的 [DHCP 選項集](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html)。

1. VPC 建立之後，移至**子網路**頁面，並記下新 VPC 的其中一個子網路的**子網路 ID**。當您在 VPC 啟動 Amazon EMR 叢集時可以使用此資訊。

# 使用 Amazon EMR 在 VPC 中啟動叢集
<a name="emr-vpc-launching-job-flows"></a>

當您擁有設定為託管 Amazon EMR 叢集的子網路後，透過指定在建立叢集時關聯子網路識別符來在該子網路中啟動叢集。

**注意**  
Amazon EMR 支援在發行版本 4.2 及更新版本中的私有子網路。

叢集啟動時，Amazon EMR 會根據叢集是在 VPC 私有或公有子網路中啟動來新增安全群組。所有安全群組允許在連接埠 8443 的輸入以與 Amazon EMR 服務通訊，但公有和私有子網路的 IP 地址範圍會有所不同。Amazon EMR 會管理所有這些安全群組，而且可能需要在一段時間內將額外的 IP 地址新增至 AWS 範圍。如需詳細資訊，請參閱[使用 Amazon EMR 叢集的安全群組控制網路流量](emr-security-groups.md)。

若要在 VPC 中管理叢集，Amazon EMR 會透過此裝置將網路裝置附接至主節點並進行管理。您可以使用 Amazon EC2 API 動作 [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeInstances.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeInstances.html) 來檢視此裝置。如果您以任何方式修改此裝置，叢集可能會失敗。

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

**使用主控台在 VPC 中啟動叢集**

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

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

1. 在**聯網**下，移至**虛擬私有雲端 (VPC)** 欄位。輸入 VPC 的名稱，或選擇**瀏覽**以選取您的 VPC。或者，選擇**建立 VPC** 以建立可用於叢集的 VPC。

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

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

------
#### [ AWS CLI ]

**使用 在 VPC 中啟動叢集 AWS CLI**
**注意**  
 AWS CLI 不提供自動建立 NAT 執行個體並將其連接到私有子網路的方法。不過，若要在子網路建立 S3 端點，您可以使用 Amazon VPC CLI 命令。使用此主控台以建立 NAT 執行個體並在私有子網路中啟動叢集。

在設定 VPC 後，您可以使用含 `--ec2-attributes` 參數的 `create-cluster` 子命令在其中啟動 Amazon EMR 叢集。使用 `--ec2-attributes` 參數來為叢集指定 VPC 子網路。
+ 若要在特定子網路中建立叢集，請鍵入下列命令，將 *myKey* 取代為您的 Amazon EC2 金鑰對名稱，並將 *77XXXX03* 取代為您的子網路 ID。

  ```
  aws emr create-cluster --name "Test cluster" --release-label emr-4.2.0 --applications Name=Hadoop Name=Hive Name=Pig --use-default-roles --ec2-attributes KeyName=myKey,SubnetId=subnet-77XXXX03 --instance-type m5.xlarge --instance-count 3
  ```

  如果您在未使用 `--instance-groups` 參數的情況下指定執行個體計數，即會啟動單一主節點，且剩餘執行個體會以核心節點的形式啟動。所有節點都會使用命令中指定的執行個體類型。
**注意**  
如果您先前尚未建立預設 Amazon EMR 服務角色和 EC2 執行個體設定檔，請先鍵入 `aws emr create-default-roles` 來建立這些項目，然後再鍵入 `create-cluster` 子命令。

------

## 確保 EC2 上 EMR 叢集的可用 IP 地址
<a name="emr-vpc-launching-job-flows-ip-availability"></a>

為了確保啟動時可用 IP 地址足夠的子網路，EC2 子網路選擇會檢查 IP 可用性。其 建立程序會使用具有必要 IP 地址計數的子網路，視需要啟動核心節點、主要節點和任務節點，即使初始建立時，也只會建立叢集的核心節點。EMR 會檢查在建立期間啟動主要節點和任務節點所需的 IP 地址數量，以及分別計算啟動核心節點所需的 IP 地址數量。所需的主執行個體和任務執行個體或節點數量下限由 Amazon EMR 自動決定。

**重要**  
如果 VPC 中沒有子網路有足夠的可用 IPs 可容納基本節點，則會傳回錯誤，而且不會建立叢集。

在大多數部署案例中，核心節點、主要節點和任務節點的每次啟動之間都有時間差異。此外，多個叢集可以共用子網路。在這些情況下，IP 地址可用性可能會波動，而後續的任務節點啟動可能會受限於可用的 IP 地址。

# 存取 Amazon S3 的私有子網路的範例政策
<a name="private-subnet-iampolicy"></a>

對於私有子網路，您至少必須可以讓 Amazon EMR 存取 Amazon Linux 儲存庫。此私有子網路政策是用於存取 Amazon S3 的 VPC 端點政策的一部分。

自 Amazon EMR 5.25.0 版或更新版本起，若要啟用持續性 Spark 歷史記錄伺服器的一鍵式存取功能，您必須允許 Amazon EMR 存取收集 Spark 事件日誌的系統儲存貯體。如果您啟用記錄，請將 PUT 許可提供給下列儲存貯體：

```
aws157-logs-${AWS::Region}/*
```

如需詳細資訊，請參閱[持續性 Spark 歷史記錄伺服器的一鍵式存取功能](https://docs.aws.amazon.com/emr/latest/ManagementGuide/app-history-spark-UI.html)。

您必須決定符合業務需求的政策限制。下列範例政策提供存取 Amazon Linux 儲存庫和 Amazon EMR 系統儲存貯體的許可，以收集 Spark 事件日誌。它顯示儲存貯體的一些範例資源名稱。

如需有關將 IAM 政策與 Amazon VPC 端點搭配使用的詳細資訊，請參閱 [Amazon S3 的端點政策](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#vpc-endpoints-policies-s3)。

下列政策範例包含 us-east-1 區域中的範例資源。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AmazonLinuxAMIRepositoryAccess",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::packages.us-east-1.amazonaws.com/*",
        "arn:aws:s3:::repo.us-east-1.amazonaws.com/*"
      ]
    },
    {
      "Sid": "EnableApplicationHistory",
      "Effect": "Allow",
      "Action": [
        "s3:Put*",
        "s3:Get*",
        "s3:Create*",
        "s3:Abort*",
        "s3:List*"
      ],
      "Resource": [
        "arn:aws:s3:::prod.us-east-1.appinfo.src/*"
      ]
    }
  ]
}
```

------

下列範例政策提供存取 us-east-1 區域中 Amazon Linux 2 儲存庫所需的許可。

```
{
   "Statement": [
       {
           "Sid": "AmazonLinux2AMIRepositoryAccess",
           "Effect": "Allow",
           "Principal": "*",
           "Action": "s3:GetObject",
           "Resource": [
           	"arn:aws:s3:::amazonlinux.us-east-1.amazonaws.com/*",
           	"arn:aws:s3:::amazonlinux-2-repos-us-east-1/*"
           ]
       }
   ]
}
```

下列範例政策提供存取 us-east-1 區域中 Amazon Linux 2023 儲存庫所需的許可。

```
{       
    "Statement": [                                       
        {                                                        
            "Sid": "AmazonLinux2023AMIRepositoryAccess",
            "Effect": "Allow",           
            "Principal": "*",                    
            "Action": "s3:GetObject",                    
            "Resource": [                                
                 "arn:aws:s3:::al2023-repos-us-east-1-de612dc2/*"
            ]                                            
        }                                                
    ]                                                    
 }
```

## 可用區域
<a name="private-subnet-iampolicy-regions"></a>

下表包含依區域列出的儲存貯體清單，並同時包含儲存庫的 Amazon Resource Name (ARN) 和代表 的 ARN 的字串`appinfo.src`。ARN 或 Amazon Resource Name 是可唯一識別 AWS 資源的字串。


| 區域 | 儲存庫儲存貯體 | AppInfo 儲存貯體 | 
| --- | --- | --- | 
| 美國東部 (俄亥俄) | "arn：aws：s3：：packages.us-east-2.amazonaws.com/","arn:aws:s3:::repo.us-east-2.amazonaws.com/","arn:aws:s3:::repo.us-east-2.emr.amazonaws.com/\$1" | "arn：aws：s3：：prod.us-east-2.appinfo.src/\$1" | 
| 美國東部 (維吉尼亞北部) | 「arn：aws：s3：：packages.us-east-1.amazonaws.com/","arn:aws:s3:::repo.us-east-1.amazonaws.com/","arn:aws:s3:::repo.us-east-1.emr.amazonaws.com/\$1」 | "arn：aws：s3：：prod.us-east-1.appinfo.src/\$1" | 
| 美國西部 (加州北部) | 「arn：aws：s3：：packages.us-west-1.amazonaws.com/","arn:aws:s3:::repo.us-west-1.amazonaws.com/","arn:aws:s3:::repo.us-west-1.emr.amazonaws.com/\$1」 | 「arn：aws：s3：：prod.us-west-1.appinfo.src/\$1」 | 
| 美國西部 (奧勒岡) | 「arn：aws：s3：：packages.us-west-2.amazonaws.com/","arn:aws:s3:::repo.us-west-2.amazonaws.com/","arn:aws:s3:::repo.us-west-2.emr.amazonaws.com/\$1」 | "arn：aws：s3：：prod.us-west-2.appinfo.src/\$1" | 
| 非洲 (開普敦) | "arn：aws：s3：：packages.af-south-1.amazonaws.com/","arn:aws:s3:::repo.af-south-1.amazonaws.com/","arn:aws:s3:::repo.af-south-1.emr.amazonaws.com/\$1" | "arn：aws：s3：：prod.af-south-1.appinfo.src/\$1" | 
| 非洲 (開普敦) | "arn：aws：s3：：packages.ap-east-1.amazonaws.com/","arn:aws:s3:::repo.ap-east-1.amazonaws.com/","arn:aws:s3:::repo.ap-east-1.emr.amazonaws.com/\$1" | "arn：aws：s3：：prod.ap-east-1.appinfo.src/\$1" | 
| 亞太區域 (海德拉巴) | "arn：aws：s3：：packages.ap-south-2.amazonaws.com/","arn:aws:s3:::repo.ap-south-2.amazonaws.com/","arn:aws:s3:::repo.ap-south-2.emr.amazonaws.com/\$1" | 「arn：aws：s3：：prod.ap-south-2.appinfo.src/\$1」 | 
| 亞太區域 (雅加達) | "arn：aws：s3：：packages.ap-southeast-3.amazonaws.com/","arn:aws:s3:::repo.ap-southeast-3.amazonaws.com/","arn:aws:s3:::repo.ap-southeast-3.emr.amazonaws.com/\$1" | 「arn：aws：s3：：prod.ap-southeast-3.appinfo.src/\$1」 | 
| 亞太區域 （馬來西亞） | "arn：aws：s3：：packages.ap-southeast-5.amazonaws.com/","arn:aws:s3:::repo.ap-southeast-5.amazonaws.com/","arn:aws:s3:::repo.ap-southeast-5.emr.amazonaws.com/\$1" | "arn：aws：s3：：prod.ap-southeast-5.appinfo.src/\$1" | 
| 亞太區域 (墨爾本) | "arn：aws：s3：：packages.ap-southeast-4.amazonaws.com/","arn:aws:s3:::repo.ap-southeast-4.amazonaws.com/","arn:aws:s3:::repo.ap-southeast-4.emr.amazonaws.com/\$1" | 「arn：aws：s3：：prod.ap-south-4.appinfo.src/\$1」 | 
| 亞太區域 (孟買) | "arn：aws：s3：：packages.ap-south-1.amazonaws.com/","arn:aws:s3:::repo.ap-south-1.amazonaws.com/","arn:aws:s3:::repo.ap-south-1.emr.amazonaws.com/\$1" | 「arn：aws：s3：：prod.ap-south-1.appinfo.src/\$1」 | 
| 亞太區域 (大阪) | "arn：aws：s3：：packages.ap-northeast-3.amazonaws.com/","arn:aws:s3:::repo.ap-northeast-3.amazonaws.com/","arn:aws:s3:::repo.ap-northeast-3.emr.amazonaws.com/\$1" | 「arn：aws：s3：：prod.ap-northeast-3.appinfo.src/\$1」 | 
| 亞太區域 (首爾) | "arn：aws：s3：：packages.ap-northeast-2.amazonaws.com/","arn:aws:s3:::repo.ap-northeast-2.amazonaws.com/","arn:aws:s3:::repo.ap-northeast-2.emr.amazonaws.com/\$1" | 「arn：aws：s3：：prod.ap-northeast-2.appinfo.src/\$1」 | 
| 亞太區域 (新加坡) | "arn：aws：s3：：packages.ap-southeast-1.amazonaws.com/","arn:aws:s3:::repo.ap-southeast-1.amazonaws.com/","arn:aws:s3:::repo.ap-southeast-1.emr.amazonaws.com/\$1" | 「arn：aws：s3：：prod.ap-southeast-1.appinfo.src/\$1」 | 
| 亞太區域 (雪梨) | "arn：aws：s3：：packages.ap-southeast-2.amazonaws.com/","arn:aws:s3:::repo.ap-southeast-2.amazonaws.com/","arn:aws:s3:::repo.ap-southeast-2.emr.amazonaws.com/\$1" | 「arn：aws：s3：：prod.ap-southeast-2.appinfo.src/\$1」 | 
| 亞太區域 (東京) | 「arn：aws：s3：：packages.ap-northeast-1.amazonaws.com/","arn:aws:s3:::repo.ap-northeast-1.amazonaws.com/","arn:aws:s3:::repo.ap-northeast-1.emr.amazonaws.com/\$1」 | 「arn：aws：s3：：prod.ap-northeast-1.appinfo.src/\$1」 | 
| 加拿大 (中部) | "arn：aws：s3：：packages.ca-central-1.amazonaws.com/","arn:aws:s3:::repo.ca-central-1.amazonaws.com/","arn:aws:s3:::repo.ca-central-1.emr.amazonaws.com/\$1" | "arn：aws：s3：：prod.ca-central-1.appinfo.src/\$1" | 
| 加拿大西部 (卡加利) | "arn：aws：s3：：packages.ca-west-1.amazonaws.com/","arn:aws:s3:::repo.ca-west-1.amazonaws.com/","arn:aws:s3:::repo.ca-west-1.emr.amazonaws.com/\$1" | 「arn：aws：s3：：prod.ca-west-1.appinfo.src/\$1」 | 
| 歐洲 (法蘭克福) | 「arn：aws：s3：：packages.eu-central-1.amazonaws.com/","arn:aws:s3:::repo.eu-central-1.amazonaws.com/","arn:aws:s3:::repo.eu-central-1.emr.amazonaws.com/\$1」 | "arn：aws：s3：：prod.eu-central-1.appinfo.src/\$1" | 
| 歐洲 (愛爾蘭) | "arn：aws：s3：：packages.eu-west-1.amazonaws.com/","arn:aws:s3:::repo.eu-west-1.amazonaws.com/","arn:aws:s3:::repo.eu-west-1.emr.amazonaws.com/\$1" | 「arn：aws：s3：：prod.eu-west-1.appinfo.src/\$1」 | 
| 歐洲 (倫敦) | "arn：aws：s3：：packages.eu-west-2.amazonaws.com/","arn:aws:s3:::repo.eu-west-2.amazonaws.com/","arn:aws:s3:::repo.eu-west-2.emr.amazonaws.com/\$1" | "arn：aws：s3：：prod.eu-west-2.appinfo.src/\$1" | 
| 歐洲 (米蘭) | "arn：aws：s3：：packages.eu-south-1.amazonaws.com/","arn:aws:s3:::repo.eu-south-1.amazonaws.com/","arn:aws:s3:::repo.eu-south-1.emr.amazonaws.com/\$1" | "arn：aws：s3：：prod.eu-south-1.appinfo.src/\$1" | 
| 歐洲 (巴黎) | "arn：aws：s3：：packages.eu-west-3.amazonaws.com/","arn:aws:s3:::repo.eu-west-3.amazonaws.com/","arn:aws:s3:::repo.eu-west-3.emr.amazonaws.com/\$1" | 「arn：aws：s3：：prod.eu-west-3.appinfo.src/\$1」 | 
| 歐洲 (西班牙) | "arn：aws：s3：：packages.eu-south-2.amazonaws.com/","arn:aws:s3:::repo.eu-south-2.amazonaws.com/","arn:aws:s3:::repo.eu-south-2.emr.amazonaws.com/\$1" | 「arn：aws：s3：：prod.eu-south-2.appinfo.src/\$1」 | 
| 歐洲 (斯德哥爾摩) | "arn：aws：s3：：packages.eu-north-1.amazonaws.com/","arn:aws:s3:::repo.eu-north-1.amazonaws.com/","arn:aws:s3:::repo.eu-north-1.emr.amazonaws.com/\$1" | "arn：aws：s3：：prod.eu-north-1.appinfo.src/\$1" | 
| 歐洲 (蘇黎世) | "arn：aws：s3：：packages.eu-central-2.amazonaws.com/","arn:aws:s3:::repo.eu-central-2.amazonaws.com/","arn:aws:s3:::repo.eu-central-2.emr.amazonaws.com/\$1" | "arn：aws：s3：：prod.eu-central-2.appinfo.src/\$1" | 
| 以色列 (特拉維夫) | "arn：aws：s3：：packages.il-central-1.amazonaws.com/","arn:aws:s3:::repo.il-central-1.amazonaws.com/","arn:aws:s3:::repo.il-central-1.emr.amazonaws.com/\$1" | "arn：aws：s3：：prod.il-central-1.appinfo.src/\$1" | 
| 中東 (巴林) | "arn：aws：s3：：packages.me-south-1.amazonaws.com/","arn:aws:s3:::repo.me-south-1.amazonaws.com/","arn:aws:s3:::repo.me-south-1.emr.amazonaws.com/\$1" | 「arn：aws：s3：：prod.me-south-1.appinfo.src/\$1」 | 
| 中東 (阿拉伯聯合大公國) | 「arn：aws：s3：：packages.me-central-1.amazonaws.com/","arn:aws:s3:::repo.me-central-1.amazonaws.com/","arn:aws:s3:::repo.me-central-1.emr.amazonaws.com/\$1」 | "arn：aws：s3：：prod.me-central-1.appinfo.src/\$1" | 
| 南美洲 (聖保羅) | "arn：aws：s3：：packages.sa-east-1.amazonaws.com/","arn:aws:s3:::repo.sa-east-1.amazonaws.com/","arn:aws:s3:::repo.sa-east-1.emr.amazonaws.com/\$1" | "arn：aws：s3：：prod.sa-east-1.appinfo.src/\$1" | 
| AWS GovCloud （美國東部） | 「arn：aws：s3：：packages.us-gov-east-1.amazonaws.com/","arn:aws:s3:::repo.us-gov-east-1.amazonaws.com/","arn:aws:s3:::repo.us-gov-east-1.emr.amazonaws.com/\$1」 | "arn：aws：s3：：prod.us-gov-east-1.appinfo.src/\$1" | 
| AWS GovCloud （美國西部） | "arn：aws：s3：：packages.us-gov-west-1.amazonaws.com/","arn:aws:s3:::repo.us-gov-west-1.amazonaws.com/","arn:aws:s3:::repo.us-gov-west-1.emr.amazonaws.com/\$1" | 「arn：aws：s3：：prod.me-south-1.appinfo.src/\$1」 | 

## 了解 VPC 的更多資源
<a name="emr-resources-about-vpcs"></a>

若要進一步了解 VPC 與子網路，請參閱下列主題。
+ 在 VPC 中的私有子網路
  + [案例 2：含公有和私有子網路 (NAT) 的 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html)
  + [NAT 執行個體](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html)
  + [Amazon VPC NAT 執行個體的高可用性：範例](https://aws.amazon.com/articles/2781451301784570)
+ 在 VPC 中的公有子網路
  + [案例 1：含單一公有子網路的 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario1.html)
+ 一般 VPC 資訊
  + 《[Amazon VPC 使用者指南](https://docs.aws.amazon.com/vpc/latest/userguide/)》
  + [VPC Peering](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-peering.html)
  + [使用彈性網路界面搭配 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ElasticNetworkInterfaces.html)
  + [安全地連接到在私有 VPC 中執行的 Linux 執行個體](https://blogs.aws.amazon.com/security/post/Tx3N8GFK85UN1G6/Securely-connect-to-Linux-instances-running-in-a-private-Amazon-VPC)

# 使用執行個體機群或統一執行個體群組建立 Amazon EMR 叢集
<a name="emr-instance-group-configuration"></a>

當您建立叢集並指定主節點、核心節點和任務節點的組態時，您有兩個組態選項。您可以使用*執行個體機群*或*統一執行個體群組*。您選擇的組態選項適用於所有節點，它適用於叢集的生命週期，且執行個體機群和執行個體群組不能在叢集中共存。執行個體機群組態在 Amazon EMR 4.8.0 版及更新版本 (不含 5.0.x 版) 中可供使用。

您可以使用 Amazon EMR 主控台 AWS CLI、 或 Amazon EMR API 來建立具有任一組態的叢集。透過 AWS CLI使用 `create-cluster` 命令時，您可以使用 `--instance-fleets` 參數來使用執行個體機群建立叢集，或者您可以使用 `--instance-groups` 參數來使用統一的執行個體群組將其建立。

使用 Amazon EMR API 的方式也是一樣。您使用 `InstanceGroups` 組態來指定一系列的 `InstanceGroupConfig` 物件，或您使用 `InstanceFleets` 組態來指定一系列的 `InstanceFleetConfig` 物件。

在新的 Amazon EMR 主控台中，您可以選擇在建立叢集時使用執行個體群組或執行個體機群，並且可以選擇對每個執行個體使用 Spot 執行個體。透過舊 Amazon EMR 主控台，如果您在建立叢集時使用預設**快速選項**設定，Amazon EMR 會將統一執行個體群組組態套用至叢集並使用隨需執行個體。若要使用 Spot 執行個體與統一的執行個體群組，或若是要設定執行個體機群和其他自訂項目，請選擇 **Advanced Options (進階選項)**。

## 執行個體機群
<a name="emr-plan-instance-fleets"></a>

執行個體機群組態提供各種佈建 Amazon EC2 執行個體的選項。每個節點類型都有單一執行個體機群，使用任務執行個體機群是選用的。當您使用 或 Amazon EMR API 建立叢集，以及隨需執行個體和 Spot 執行個體的[配置策略](emr-instance-fleet.md#emr-instance-fleet-allocation-strategy)時，每個機群最多可以指定五個 EC22 執行個體類型， AWS CLI 或每個機群指定 30 個 EC2 執行個體類型。對於核心和任務執行個體機群，您會為隨需執行個體指定一個*目標容量*，而為 Spot 執行個體指定另一個目標容量。Amazon EMR 選擇任何混合的指定執行個體類型以滿足目標容量，同時佈建隨需和 Spot 執行個體。

對於主節點類型，Amazon EMR 從執行個體清單中選擇單一執行個體類型，而且您會指定它是否佈建為隨需或 Spot 執行個體。執行個體機群還為 Spot 執行個體和隨需購買提供其他選項。Spot 執行個體選項包括指定在無法佈建 Spot 容量時要採取的動作的逾時，以及用於啟動 Spot 執行個體機群的偏好配置策略 (容量優化)。您也可以使用配置策略 (價格最低) 選項啟動隨需執行個體機群。如果您使用的服務角色不是 EMR 預設服務角色，或在您的服務角色中使用 EMR 受管政策，則需要將其他許可新增至自訂叢集服務角色，才能啟用配置策略選項。如需詳細資訊，請參閱[Amazon EMR 的服務角色 (EMR 角色)](emr-iam-role.md)。

如需有關設定執行個體機群的詳細資訊，請參閱 [為您的 Amazon EMR 叢集規劃和設定執行個體機群](emr-instance-fleet.md)。

## 統一執行個體群組
<a name="emr-plan-instance-groups"></a>

統一執行個體群組提供比執行個體機群更簡單的設定。每個 Amazon EMR 叢集可包含最多 50 個執行個體群組：一個主要執行個體群組 (包含一個 Amazon EC2 執行個體)、核心執行個體群組 (包含一或多個 EC2 執行個體)，以及最多 48 個選用任務執行個體群組。每個核心和任務執行個體群組可以包含任意數量的 Amazon EC2 執行個體。您可以透過手動新增和移除 Amazon EC2 執行個體來擴展每個執行個體群組，或者您可以設定自動擴展。如需有關新增和移除執行個體的詳細資訊，請參閱 [使用 Amazon EMR 叢集擴展來調整不斷變化的工作負載](emr-scale-on-demand.md)。

如需設定統一執行個體群組的詳細資訊，請參閱 [為您的 Amazon EMR 叢集設定統一執行個體群組](emr-uniform-instance-group.md)。

## 使用執行個體機群和執行個體群組
<a name="emr-plan-instance-topics"></a>

**Topics**
+ [執行個體機群](#emr-plan-instance-fleets)
+ [統一執行個體群組](#emr-plan-instance-groups)
+ [使用執行個體機群和執行個體群組](#emr-plan-instance-topics)
+ [為您的 Amazon EMR 叢集規劃和設定執行個體機群](emr-instance-fleet.md)
+ [為您的 Amazon EMR 叢集重新設定執行個體機群](instance-fleet-reconfiguration.md)
+ [在 Amazon EMR 中對執行個體機群使用容量保留](on-demand-capacity-reservations.md)
+ [為您的 Amazon EMR 叢集設定統一執行個體群組](emr-uniform-instance-group.md)
+ [Amazon EMR 叢集的可用區域彈性](emr-flexibility.md)
+ [設定 Spot 執行個體的 Amazon EMR 叢集執行個體類型和最佳實務](emr-plan-instances-guidelines.md)

# 為您的 Amazon EMR 叢集規劃和設定執行個體機群
<a name="emr-instance-fleet"></a>

**注意**  
執行個體機群組態只能在 Amazon EMR 4.8.0 版及更新版本 (不含 5.0.0 和 5.0.3 版) 中使用。

Amazon EMR 叢集的執行個體機群組態可讓您為 Amazon EC2 執行個體選取各種佈建選項，並協助您為叢集中的每個節點類型制定靈活有彈性的資源分配策略。

在執行個體機群組態中，您可以為每個機群內的[隨需執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-on-demand-instances.html)與 [Spot 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html)指定*目標容量*。在叢集啟動時，Amazon EMR 會佈建執行個體，直到目標滿足為止。當 Amazon EC2 由於價格增加或執行個體失敗而回收正在執行的叢集中的 Spot 執行個體時，則 Amazon EMR 會嘗試將此執行個體取代為您指定的任何執行個體類型。這能讓 Spot 定價高峰期間重新獲得容量變得更容易。

當您使用 AWS CLI 或 Amazon EC2 API 建立叢集，以及隨需執行個體和 Spot 執行個體的[配置策略](#emr-instance-fleet-allocation-strategy)時，每個機群最多可為 Amazon EMR 指定五個用於實現目標的 Amazon EC2 執行個體類型，或每個機群最多可指定 30 個 Amazon EC2 執行個體類型。

您也可以為不同可用區域選擇多個子網路。當 Amazon EMR 啟動叢集時，它會在這些子網路中尋找您指定的執行個體和購買選項。如果 Amazon EMR 在一或多個可用區域中偵測到 AWS 大規模事件，Amazon EMR 會自動嘗試將流量路由離開受影響的可用區域，並根據您的選擇，嘗試啟動您在替代可用區域中建立的新叢集。請注意，叢集可用區域選擇僅在建立叢集時進行。如果可用區域中斷，現有叢集節點不會在新的可用區域中自動重新啟動。

## **使用執行個體機群的考量事項**
<a name="emr-key-feature-summary"></a>

將執行個體機群與 Amazon EMR 搭配使用時，考慮下列事項。
+ 您可以具有一個執行個體機群，每種節點類型 (主要、核心、任務) 只能具有一個執行個體機群。您可以為 上的每個機群指定最多五個 Amazon EC2 執行個體類型 AWS 管理主控台 （或當您使用 AWS CLI 或 Amazon EMR API 和 建立叢集時，每個執行個體機群最多指定 30 個類型[執行個體機群的配置策略](#emr-instance-fleet-allocation-strategy))。
+ Amazon EMR 選擇任一或所有指定的 Amazon EC2 執行個體類型來同時使用 Spot 和隨需購買選項進行佈建。
+ 您可以針對核心機群和任務機群建立適用於 Spot 和隨需執行個體的目標容量。使用計入目標的 vCPU 或指派給每個 Amazon EC2 執行個體的一般單位。直到每個目標容量完全履行為止，Amazon EMR 會佈建執行個體。針對主機群，目標一律為一個。
+ 您可以選擇一個子網路 (可用區域) 或範圍。如果您選擇範圍，Amazon EMR 會在最符合的可用區域中佈建容量。
+ 當您為 Spot 執行個體指定目標容量時：
  + 針對每種執行個體類型，指定最大的 Spot 價格。如果 Spot 價格低於最大 Spot 價格，Amazon EMR 會佈建 Spot 執行個體。您僅需支付該 Spot 價格。
  + 針對每個機群，定義逾時期間以佈建 Spot 執行個體。如果 Amazon EMR 無法佈建 Spot 容量，您可以終止叢集或切換到佈建的隨需容量。這僅適用於佈建叢集，並不適用於調整叢集大小。如果逾時期間在叢集大小調整程序期間結束，則未佈建的 Spot 請求將無效，而不會傳輸至隨需容量。
+ 對於每個機群，您可以為 Spot 執行個體指定下列其中一種配置策略：價格容量最佳化、容量最佳化、capacity-optimized-prioritized、最低價格，或分散在所有集區。
+ 對於每個機群，您可以為隨需執行個體套用下列配置策略：最低價格策略或優先策略。
+ 對於每個具有隨需執行個體的機群，您可以選擇套用容量保留選項。
+ 如果您針對執行個體機群使用配置策略，當您為 EMR 叢集選擇子網路時，會套用下列考量：
  + 當 Amazon EMR 佈建具有任務機群的叢集時，它會篩選掉缺少足夠可用 IP 地址的子網路，以佈建請求 EMR 叢集的所有執行個體。這包括叢集啟動期間主要、核心和任務執行個體機群所需的 IP 地址。然後，Amazon EMR 會利用其配置策略，根據執行個體類型和具有足夠 IP 地址的剩餘子網路來判斷執行個體集區，以啟動叢集。
  + 如果 Amazon EMR 由於可用 IP 地址不足而無法啟動整個叢集，則會嘗試識別具有足夠可用 IP 地址的子網路，以啟動基本 （核心和主要） 執行個體機群。在這種情況下，您的任務執行個體機群將進入暫停狀態，而不是在發生錯誤的情況下終止叢集。
  + 如果指定的子網路中沒有包含足夠的 IP 地址來佈建基本核心和主要執行個體機群，叢集啟動將會失敗，並顯示 **VALIDATION\$1ERROR**。這會觸發 **CRITICAL** 嚴重性叢集終止事件，通知您叢集無法啟動。為了避免此問題，建議您增加子網路中的 IP 地址數量。
+ 如果您執行 Amazon EMR 發行版本 **emr-7.7.0** 及更高版本，並且對執行個體機群使用配置策略，則可以將叢集擴展到每個執行個體機群最多 4000 個 EC2 執行個體和 14000 個 EBS 磁碟區。對於低於 **emr-7.7.0** 的發行版本，叢集只能擴展至每個執行個體機群 2000 個 EC2 執行個體和 7000 個 EBS 磁碟區。
+ 當您啟動隨需執行個體時，您可以為帳戶中的主要、核心和任務節點使用開放或目標容量保留。使用具有執行個體機群配置策略的隨需執行個體時，可能會看到容量不足。我們建議您指定多個執行個體類型來多樣化，並降低容量不足的機率。如需詳細資訊，請參閱[在 Amazon EMR 中對執行個體機群使用容量保留](on-demand-capacity-reservations.md)。

## 執行個體機群選項
<a name="emr-instance-fleet-options"></a>

請使用下列準則以了解執行個體機群選項。

**Topics**
+ [**設定目標容量**](#emr-fleet-capacity)
+ [**啟動選項**](#emr-fleet-spot-options)
+ [**多個子網路 (可用區域) 選項**](#emr-multiple-subnet-options)
+ [**主節點組態**](#emr-master-node-configuration)

### **設定目標容量**
<a name="emr-fleet-capacity"></a>

指定您需要的核心機群和任務機群目標容量。在您執行此作業時，即會決定隨需執行個體的數量和 Amazon EMR 佈建的 Spot 執行個體。當您指定執行個體時，您將決定每個執行個體計入目標的數量。當隨需執行個體 (On-Demand Instance) 已完成佈建，它會計入隨需的目標。Spot 執行個體也是一樣。與核心和任務機群不同，主機群一律是一個執行個體。因此，針對主機群的目標容量一律為一個。

當您使用主控台時，Amazon EC2 執行個體類型的 vCPU 依預設會用作目標容量的計數。您可以變更此為 **Generic units (一般單位)**，然後為每個 EC2 執行個體類型指定計數。使用 時 AWS CLI，您可以為每個執行個體類型手動指派一般單位。

**重要**  
當您使用 選擇執行個體類型時 AWS 管理主控台，每個**執行個體類型**顯示的 **vCPU** 數量是該執行個體類型的 YARN vcore 數量，而不是該執行個體類型的 EC2 vCPUs 數量。如需有關每種執行個體類型的 vCPU 數量的詳細資訊，請參閱 [Amazon EC2 執行個體類型](https://aws.amazon.com/ec2/instance-types/)。

針對每個機群，您可指定最多 5 種 Amazon EC2 執行個體類型。如果您使用 [執行個體機群的配置策略](#emr-instance-fleet-allocation-strategy)並使用 AWS CLI 或 Amazon EMR API 建立叢集，則每個執行個體機群最多可指定 30 個 EC2 執行個體類型。Amazon EMR 會選擇這些 EC2 執行個體類型的任意組合，以滿足您的目標容量。由於 Amazon EMR 想要完全滿足目標容量，故可能發生超額。例如，如果有 2 個未滿足的單位，而 Amazon EMR 只能以 5 個單位的計數佈建執行個體，該執行個體仍會佈建，這表示該目標容量已超過 3 個單位。

如果您降低目標容量以調整執行中叢集的大小，Amazon EMR 會嘗試完成應用程式任務，並終止執行個體以滿足新的目標。如需詳細資訊，請參閱[於任務完成時終止](emr-scaledown-behavior.md#emr-scaledown-terminate-task)。

### **啟動選項**
<a name="emr-fleet-spot-options"></a>

對於 Spot 執行個體，您可以為機群中的每種執行個體類型指定 **Spot 價格上限**。您可以依隨需價格的百分比或特定的金額來設定此價格。如果目前可用區域中的 Spot 價格低於您的最大 Spot 價格，則 Amazon EMR 會佈建 Spot 執行個體。您僅需支付該 Spot 價格。

**注意**  
從 2021 年 7 月 1 日起，具有定義期間的 Spot 執行個體 (也稱為 Spot 區塊) 不再提供給新客戶。對於先前使用過此功能的客戶，在 2022 年 12 月 31 日之前，我們將繼續支援具有指定期間的 Spot 執行個體。

在 Amazon EMR 5.12.1 及更新版本中可用，您可以選擇啟動具有優化容量配置的 Spot 和隨需執行個體機群。您可以在舊的 中 AWS 管理主控台 或使用 API 設定此配置策略選項`RunJobFlow`。請注意，您無法在新主控台中自訂配置策略。使用配置策略選項需要額外的服務角色許可。如果您對叢集使用預設 Amazon EMR 服務角色和受管政策 ([`EMR_DefaultRole`](emr-iam-role.md) 和 `AmazonEMRServicePolicy_v2`)，則已包含配置策略選項的許可。如果未使用預設 Amazon EMR 服務角色和受管政策，您必須予以新增才能使用此選項。請參閱 [Amazon EMR 的服務角色 (EMR 角色)](emr-iam-role.md)。

如需 Spot 執行個體的詳細資訊，請參閱《Amazon EC2 使用者指南》中的 [Spot 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html)。如需隨需執行個體的詳細資訊，請參閱《Amazon EC2 使用者指南》中的[隨需執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-on-demand-instances.html)。

如果您選擇以價格最低的配置策略啟動隨需執行個體機群，則可以選擇使用容量保留。您可以使用 Amazon EMR API `RunJobFlow` 設定容量保留選項。容量保留需要其他服務角色許可，您必須新增這些許可才能使用這些選項。請參閱 [配置策略許可配置策略所需的 IAM 許可](#create-cluster-allocation-policy)。請注意，您無法在新的主控台中自訂容量保留。

### **多個子網路 (可用區域) 選項**
<a name="emr-multiple-subnet-options"></a>

當您使用執行個體機群時，可以指定 VPC 內的多個 Amazon EC2 子網路，每個對應至不同的可用區域。如果使用的是 EC2-Classic，您會明確指定可用區域。根據您的機群規格，Amazon EMR 會識別啟動執行個體的最佳可用區域。僅一律在一個可用區域中佈建執行個體。您可以選擇私有子網路或公有子網路，但您無法混合兩者，以及您指定的子網路必須位於相同的 VPC。

### **主節點組態**
<a name="emr-master-node-configuration"></a>

由於主要執行個體機群只是單一執行個體，其組態與核心和任務執行個體機群稍有不同。您只需為主要執行個體機群選取隨需或 Spot，因為它只包含一個執行個體。如果您使用主控台來建立執行個體機群，您選取之購買選項的目標容量會設為 1。如果您使用 AWS CLI，請務必視需要`TargetOnDemandCapacity`將 `TargetSpotCapacity`或 設為 1。您仍然可以為主要執行個體機群選擇最多 5 種執行個體類型 (當您使用隨需或 Spot 執行個體的配置策略選項時，最多可選擇 30 種)。不過，與核心和任務執行個體機群不同，其中 Amazon EMR 可能佈建不同類型的多個執行個體，Amazon EMR 會選取單一執行個體類型來為主要執行個體機群進行佈建。

## 執行個體機群的配置策略
<a name="emr-instance-fleet-allocation-strategy"></a>

透過 Amazon EMR 5.12.1 版及更新版本，您可以將配置策略選項與每個叢集節點的隨需和 Spot 執行個體搭配使用。當您將 AWS CLI、Amazon EMR API 或 Amazon EMR 主控台與配置策略搭配使用來建立叢集時，每個機群最多可以指定 30 種 Amazon EC2 執行個體類型。透過預設 Amazon EMR 叢集執行個體機群組態，每個機群最多可以具有 5 種執行個體類型。建議您使用配置策略選項，以實現更快的叢集佈建、更準確的 Spot 執行個體配置，以及更少的 Spot 執行個體中斷。

**Topics**
+ [隨需執行個體的配置策略](#emr-instance-fleet-allocation-strategy-od)
+ [Spot 執行個體的配置策略](#emr-instance-fleet-allocation-strategy-spot)
+ [配置策略許可](#emr-instance-fleet-allocation-strategy-permissions)
+ [配置策略所需的 IAM 許可](#create-cluster-allocation-policy)

### 隨需執行個體的配置策略
<a name="emr-instance-fleet-allocation-strategy-od"></a>

下列配置策略適用於您的隨需執行個體：

`lowest-price`** （預設）**  
價格最低的配置策略會從價格最低且具有可用容量的集區啟動隨需執行個體。如果最低價集區沒有可用容量，隨需執行個體會來自下一個具有可用容量的最低價集區。

`prioritized`  
優先配置策略可讓您為執行個體機群的每個執行個體類型指定優先順序值。Amazon EMR 會啟動優先順序最高的隨需執行個體。如果您使用此策略，您必須設定至少一個執行個體類型的優先順序。如果您未設定執行個體類型的優先順序值，Amazon EMR 會將最低優先順序指派給該執行個體類型。叢集中的每個執行個體機群 （主要、核心或任務） 對於指定的執行個體類型可以有不同的優先順序值。

**注意**  
如果您使用**capacity-optimized-prioritized** Spot 配置策略，Amazon EMR 會在您設定優先順序時，將相同的優先順序套用至隨需執行個體和 Spot 執行個體。

### Spot 執行個體的配置策略
<a name="emr-instance-fleet-allocation-strategy-spot"></a>

對於 *Spot 執行個體*，您可以從下列其中一個配置策略中選擇：

**`price-capacity-optimized` (建議) **  
價格容量優化配置策略根據要啟動的執行個體數量從可用容量最高且價格最低的 Spot 執行個體集區中啟動 Spot 執行個體。因此，價格容量最佳化策略通常會有較高的機會取得 Spot 容量，並提供較低的中斷率。這是 Amazon EMR 6.10.0 版和更新版本的預設策略。

**`capacity-optimized`**  
容量優化配置策略會在短期內中斷可能性最低的最可用集區中啟動 Spot 執行個體。對於可能因重新啟動工作而產生較高中斷成本的工作負載來說，這是一個很好的選擇。這是 Amazon EMR 6.9.0 版及更低版本的預設策略。

**`capacity-optimized-prioritized`**  
capacity-optimized-prioritized策略可讓您為執行個體機群中的每個執行個體類型指定優先順序值。Amazon EMR 會先針對容量進行最佳化，但會盡力遵守執行個體類型的優先順序，例如，如果優先順序不會顯著影響機群佈建最佳容量的能力。如果您的工作負載必須具有最低程度的中斷，且仍然需要特定執行個體類型，建議您使用此選項。如果您使用此策略，您必須設定至少一個執行個體類型的優先順序。如果您未設定任何執行個體類型的優先順序，Amazon EMR 會將最低優先順序值指派給該執行個體類型。叢集中的每個執行個體機群 （主要、核心或任務） 對於指定的執行個體類型可以有不同的優先順序值。  
如果您使用**優先順序**的隨需配置策略，Amazon EMR 會在您設定優先順序時，將相同的優先順序值套用至隨需執行個體和 Spot 執行個體。

**`diversified`**  
透過多樣化配置策略，Amazon EC2 可將 Spot 執行個體分配在所有 Spot 容量集區中。

**`lowest-price`**  
價格最低的配置策略會從價格最低且具有可用容量的集區中啟動 Spot 執行個體。如果價格最低的集區沒有可用容量，Spot 執行個體來自下一個價格最低且具有可用容量的集區。如果集區在滿足您請求的容量之前用完容量，Amazon EC2 機群將從下一個價格最低的集區中提取容量來滿足您的請求。為確保達到所需的容量，您可能會從數個集區中接收 Spot 執行個體。由於此策略僅考慮執行個體價格，而不考慮容量可用性，因此可能會導致高中斷率。

### 配置策略許可
<a name="emr-instance-fleet-allocation-strategy-permissions"></a>

配置策略選項需要數個自動包含在預設 Amazon EMR 服務角色和 Amazon EMR 受管政策 (`EMR_DefaultRole` 和 `AmazonEMRServicePolicy_v2`) 中的 IAM 許可。如果對叢集使用自訂服務角色或受管政策，您必須在建立叢集之前新增這些許可。如需詳細資訊，請參閱[配置策略許可配置策略所需的 IAM 許可](#create-cluster-allocation-policy)。

當您使用隨需配置策略選項時，選用隨需容量保留 (ODC) 可用。容量保留選項可讓您先為 Amazon EMR 叢集，指定使用預留容量的偏好設定。您可以使用此功能來確保您的關鍵工作負載使用您已使用開放或目標 ODCR 保留的容量。對於非關鍵工作負載，容量保留偏好設定可讓您指定是否應該使用預留容量。

容量保留只能供與其屬性 (執行個體類型、平台和可用區域) 相符的執行個體使用。依預設，Amazon EMR 在佈建與執行個體屬性相符的隨需執行個體時，會自動使用開放容量保留。如果執行中的執行個體沒有一個與容量保留的屬性相符，在您啟動與其屬性相符的執行個體之前，執行個體會保持不用。如果不想在啟動叢集時使用任何容量保留，您必須在啟動選項中將容量保留偏好設定設為**無**。

不過，您也可以針對特定工作負載進行容量保留。這可讓您明確控制哪些執行個體可以在該預留容量中執行。如需有關隨需容量保留的詳細資訊，請參閱 [在 Amazon EMR 中對執行個體機群使用容量保留](on-demand-capacity-reservations.md)。

### 配置策略所需的 IAM 許可
<a name="create-cluster-allocation-policy"></a>

您的 [Amazon EMR 的服務角色 (EMR 角色)](emr-iam-role.md) 需要其他許可才能建立使用隨需或 Spot 執行個體機群配置策略選項的叢集。

我們會自動將這些許可納入預設 Amazon EMR 服務角色 [`EMR_DefaultRole`](emr-iam-role.md) 和 Amazon EMR 受管政策 [`AmazonEMRServicePolicy_v2`](emr-managed-iam-policies.md)。

如果對叢集使用自訂服務角色或受管政策，您必須新增下列許可：

------
#### [ JSON ]

****  

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

------

建立使用開放或目標容量保留的叢集需要下列服務角色許可。除了使用配置策略選項所需的許可以外，您還必須包含這些許可。

**Example 服務角色容量保留的政策文件**  
若要使用開放容量保留，您必須包含下列其他許可。    
****  

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

**Example**  
若要使用目標容量保留，您必須包含下列其他許可。    
****  

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

## 為叢集設定執行個體機群
<a name="emr-instance-fleet-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. 針對每個**節點群組**，選取**新增執行個體類型**，然後針對主要和核心執行個體機群選擇最多 5 種執行個體類型，針對任務執行個體機群選擇最多 15 種執行個體類型。Amazon EMR 在啟動叢集時，可以佈建這些執行個體類型的任何混合。

1. 在每個節點群組類型下，選擇每個執行個體旁邊的**動作**下拉式功能表，以變更以下設定：  
**新增 EBS 磁碟區**  
在 Amazon EMR 佈建之後，指定 EBS 磁碟區以附接至執行個體類型。  
**編輯加權容量**  
對於核心節點群組，請將此值變更為適合您應用程式的任何數量的單位。每個機群執行個體類型的 YARN vCores 數量用作預設加權容量單位。您無法編輯主節點的加權容量。  
**編輯 Spot 價格上限**  
為機群中的每種執行個體類型指定最高 Spot 價格。您可以依隨需價格的百分比或特定的金額來設定此價格。如果可用區域中的目前 Spot 價格低於您的最大 Spot 價格，則 Amazon EMR 會佈建 Spot 執行個體。您僅需支付該 Spot 價格。

1. 或者，若要為節點新增安全群組，請展開**聯網**區段中的 **EC2 安全群組 (防火牆)**，然後為每種節點類型選取安全群組。

1. 或者，如果您要使用配置策略選項，請選取**套用配置策略**旁邊的核取方塊，然後選取要為 Spot 執行個體指定的配置策略。如果您的 Amazon EMR 服務角色沒有必要許可，您不應選取此選項。如需詳細資訊，請參閱[執行個體機群的配置策略](#emr-instance-fleet-allocation-strategy)。

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

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

------
#### [ AWS CLI ]

若要使用 建立和啟動具有執行個體機群的叢集 AWS CLI，請遵循下列準則：
+ 若要建立和啟動叢集和執行個體叢集，請使用 `create-cluster` 命令以及 `--instance-fleet` 參數。
+ 若要取得有關叢集中執行個體機群的組態詳細資訊，請使用 `list-instance-fleets` 命令。
+ 若要將多個自訂 Amazon Linux AMI 新增至您正在建立的叢集，請將 `CustomAmiId` 選項與每個 `InstanceType` 規格搭配使用。您可以設定具有多個執行個體類型和多個自訂 AMI 的執行個體機群節點，以符合您的需求。請參閱 [範例：使用執行個體機群組態建立叢集](#create-cluster-instance-fleet-cli)。
+ 若要對執行個體機群的目標容量進行變更，請使用 `modify-instance-fleet` 命令。
+ 若要將任務執行個體機群新增至尚未擁有任務執行個體機群的叢集中，請使用 `add-instance-fleet` 命令。
+ 您可以將 CustomAmiId 引數與 add-instance-fleet 命令搭配使用，將多個自訂 AMI 新增至任務執行個體機群。請參閱 [範例：使用執行個體機群組態建立叢集](#create-cluster-instance-fleet-cli)。
+ 若要在建立執行個體機群時使用配置策略選項，請更新服務角色以將範例政策文件納入下一節。
+ 若要在透過隨需配置策略建立執行個體機群時使用容量保留選項，請更新服務角色以將範例政策文件納入下一節。
+ 執行個體機群會自動包含在預設 EMR 服務角色和 Amazon EMR 受管政策 (`EMR_DefaultRole` 和 `AmazonEMRServicePolicy_v2`) 中。如果對叢集使用自訂服務角色或自訂客戶管理政策，您必須在下節中為配置策略新增許可。

------

## 範例：使用執行個體機群組態建立叢集
<a name="create-cluster-instance-fleet-cli"></a>

以下範例示範 `create-cluster` 命令，其中您可以結合多種選項。

**注意**  
如果您先前尚未建立預設 Amazon EMR 服務角色和 EC2 執行個體設定檔，請使用 `aws emr create-default-roles` 來建立這些設定檔，然後再使用 `create-cluster` 命令。

**Example 範例：隨需主要、含單一執行個體類型的隨需核心、預設 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}']
```

**Example 範例：Spot 主要、含單一執行個體類型的 Spot 核心、預設 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}']
```

**Example 範例：隨需主要、含單一執行個體類型的混合核心、單一 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}']
```

**Example 範例：隨需主要，含多個加權執行個體類型的 Spot 核心、Spot 的逾時、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}'}
```

**Example 範例：隨需主要，含多個加權執行個體類型的混合核心和任務、核心 Spot 執行個體的逾時、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}']
```

**Example 範例：Spot 主要、無核心或任務、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}]}}']
```

**Example 範例：多個自訂 AMI、多種執行個體類型、隨需主要、隨需核心**  

```
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}']
```

**Example 範例：將任務節點新增至具有多種執行個體類型和多個自訂 AMI 的執行中叢集**  

```
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}']
```

**Example 範例：使用 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* 檔案會指定主要、核心和任務執行個體機群，如下列範例所示。核心執行個體機群以隨需的百分比形式使用 Spot 價格上限 (`BidPrice`)，同時任務和主要執行個體機群以 USD 的字串形式使用 Spot 價格上限 (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",
            "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"
            }
        ]
    }
]
```

## 修改執行個體機群的目標容量
<a name="emr-fleet-modify-target-cli"></a>

使用 `modify-instance-fleet` 命令來指定執行個體機群的新目標容量。您必須指定叢集 ID 和執行個體機群 ID。使用 `list-instance-fleets` 命令來擷取執行個體機群 ID。

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

## 將任務執行個體機群新增至叢集
<a name="emr-task-instance-fleet"></a>

如果叢集僅有主要和核心執行個體機群，您可以使用 `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}']
```

## 取得叢集中執行個體機群的組態詳細資訊
<a name="emr-instance-fleet-get-configuration"></a>

使用 `list-instance-fleets` 命令來取得叢集中執行個體機群之組態的詳細資訊。此命令會將叢集 ID 做為輸入。下列範例會針對包含主要任務執行個體群組和核心任務執行個體群組的叢集示範命令及其輸出。如需完整的回應語法，請參閱《Amazon EMR API 參考》**中的 [ListInstanceFleets](https://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_ListInstanceFleets.html)。

```
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"
        }
    ]
}
```

# 為您的 Amazon EMR 叢集重新設定執行個體機群
<a name="instance-fleet-reconfiguration"></a>

使用 Amazon EMR 5.21.0 版及更新版本，您可以重新設定叢集應用程式，並為執行中叢集中的每個執行個體機群指定額外的組態分類。若要這樣做，您可以使用 AWS 命令列界面 (AWS CLI) 或 AWS SDK。

您可以檢視 CloudWatch 事件來追蹤執行個體機群的狀態。如需詳細資訊，請參閱[執行個體機群重新設定事件](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-manage-cloudwatch-events.html#emr-cloudwatch-instance-fleet-events-reconfig)。

**注意**  
您只能覆寫叢集建立期間指定的叢集組態物件。如需組態物件的詳細資訊，請參閱 [RunJobFlow 請求語法](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html#API_RunJobFlow_RequestSyntax)。如果現有組態與您提供的檔案之間存在差異，Amazon EMR 會將手動修改的組態重設為指定執行個體機群的叢集預設值，例如您使用 SSH 連線至叢集時修改的組態。

當您使用 Amazon EMR 主控台、 AWS Command Line 界面 (AWS CLI) 或 AWS SDK 提交重新組態請求時，Amazon EMR 會檢查現有的叢集上組態檔案。如果現有組態與您提供的檔案之間存在差異，Amazon EMR 會啟動重新組態動作、重新啟動一些應用程式，並將任何手動修改的組態重設為指定執行個體機群的叢集預設值，例如您使用 SSH 連線至叢集時修改的組態。

## 重新設定行為
<a name="instance-fleet-reconfiguration-behaviors"></a>

重新組態會使用新提交的組態集覆寫叢集上的組態，並且可以覆寫在重新組態 API 之外所做的組態變更。

Amazon EMR 遵循滾動程序來重新設定任務和核心執行個體機群中的執行個體。一次只會修改和重新啟動單一執行個體類型的一部分執行個體。如果您的執行個體機群有多個不同的執行個體類型組態，它們會平行重新設定。

重新設定會在 [InstanceTypeConfig](https://docs.aws.amazon.com/emr/latest/APIReference/API_InstanceTypeConfig.html) 層級宣告。如需視覺化範例，請參閱 [重新設定執行個體機群](#instance-fleet-reconfiguration-cli-sdk)。您可以提交重新組態設定請求，其中包含單一請求中一或多個執行個體類型的更新組態設定。您必須在修改請求中包含屬於執行個體機群的所有執行個體類型；不過，具有填入組態欄位的執行個體類型會進行重新設定，而機群中的其他`InstanceTypeConfig`執行個體保持不變。只有在指定執行個體類型的所有執行個體都完成重新設定時，才會將重新設定視為成功。如果任何執行個體無法重新設定，整個執行個體機群會自動還原至其上次已知的穩定組態。

## 限制
<a name="instance-fleet-reconfiguration-limitations"></a>

當您在執行中的叢集中重新設定執行個體機群時，請考慮下列限制：
+ 非 YARN 應用程式可能會在重新啟動期間失敗或導致叢集問題，尤其是在應用程式未正確設定的情況下。接近最大記憶體和 CPU 用量的叢集在重新啟動程序後可能會遇到問題。對於主要執行個體機群來說尤其如此。請參閱 [執行個體機群重新設定疑難排解](#instance-fleet-reconfiguration-troubleshooting)一節。
+ 調整大小和重新設定操作不會平行發生。重新設定請求會等待持續調整大小，反之亦然。
+ 調整大小和重新設定操作不會平行發生。重新設定請求會等待持續調整大小，反之亦然。
+ 重新設定執行個體機群後，Amazon EMR 會重新啟動應用程式，以允許新組態生效。如果應用程式在重新組態期間正在使用中，則可能會發生作業失敗或其他未預期的應用程式行為。
+ 如果執行個體機群下任何執行個體類型組態的重新設定失敗，Amazon EMR 會將組態參數還原為整個執行個體機群的先前工作版本，以及發出事件和更新狀態詳細資訊。如果還原程序也失敗，您必須提交新的`ModifyInstanceFleet`請求，才能從 `ARRESTED` 狀態復原執行個體機群。還原失敗會導致[執行個體機群重新設定事件](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-manage-cloudwatch-events.html#emr-cloudwatch-instance-fleet-events-reconfig)和狀態變更。
+ 只有 Amazon EMR 5.23.0 版及更新版本支援 Phoenix 組態分類的重新組態請求，而 Amazon EMR 5.21.0 或 5.22.0 版不提供支援。
+ 只有 Amazon EMR 5.30.0 版及更新版本支援 HBase 組態分類的重新組態請求，而 Amazon EMR 5.23.0 至 5.29.0 版不提供支援。
+ 在具有多個主節點的 Amazon EMR 叢集上，不支援重新設定 hdfs-encryption-zones 分類或任何 Hadoop KMS 組態分類。
+ Amazon EMR 目前不支援需要重新啟動 YARN ResourceManager 的 YARN 容量排程器的特定重新設定請求。例如，您無法完全移除佇列。
+ 當 YARN 需要重新啟動時，所有執行中的 YARN 任務通常會終止並遺失。這可能會導致資料處理延遲。若要在 YARN 重新啟動期間執行 YARN 任務，您可以建立具有多個主節點的 Amazon EMR 叢集，或在 yarn-site 組態分類`true`中將 yarn.resourcemanager.recovery.enabled 設定為 。如需有關使用多個主節點的詳細資訊，請參閱[高可用性 YARN ResourceManager](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-ha-applications.html#emr-plan-ha-applications-YARN)。

## 重新設定執行個體機群
<a name="instance-fleet-reconfiguration-cli-sdk"></a>

------
#### [ Using the AWS CLI ]

使用 `modify-instance-fleet`命令來指定執行中叢集中執行個體機群的新組態。

**注意**  
在下列範例中，將 **j-2AL4XXXXXX5T9** 取代為您的叢集 ID，並將 **if-1xxxxxxx9** 取代為您的執行個體機群 ID。

**範例 – 取代執行個體機群的組態**

**警告**  
指定您在啟動時使用的所有`InstanceTypeConfig`欄位。不包含欄位可能會導致您在啟動時宣告的覆寫規格。如需清單，請參閱 [InstanceTypeConfig](https://docs.aws.amazon.com/emr/latest/APIReference/API_InstanceTypeConfig.html)。

下列範例參考名為 instanceFleet.json 的組態 JSON 檔案，以編輯執行個體機群的 YARN NodeManager 磁碟運作狀態檢查器屬性。

**執行個體機群修改 JSON**

1. 準備您的組態分類，並將其儲存為 instanceFleet.json，並儲存在您要執行 命令的相同目錄中。

   ```
   {
       "InstanceFleetId":"if-1xxxxxxx9",
       "InstanceTypeConfigs": [
               {
                   "InstanceType": "m5.xlarge",
                  other InstanceTypeConfig fields
                   "Configurations": [
                       {
                           "Classification": "yarn-site",
                           "Properties": {
                               "yarn.nodemanager.disk-health-checker.enable":"true",
                               "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"100.0"
                           }
                       }
                   ]
               },
               {
                   "InstanceType": "r5.xlarge",
                  other InstanceTypeConfig fields
                   "Configurations": [
                       {
                           "Classification": "yarn-site",
                           "Properties": {
                               "yarn.nodemanager.disk-health-checker.enable":"false",
                               "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"70.0"
                           }
                       }
                   ]
               }
           ]
   ```

1. 執行下列命令。

   ```
   aws emr modify-instance-fleet \
   --cluster-id j-2AL4XXXXXX5T9 \
   --region us-west-2 \
   --instance-fleet instanceFleet.json
   ```

**範例 – 將組態新增至執行個體機群**

如果您想要將組態新增至執行個體類型，您必須在新的`ModifyInstanceFleet`請求中包含該執行個體類型先前指定的所有組態。否則，會移除先前指定的組態。

下列範例新增 YARN NodeManager 虛擬記憶體檢查程式的屬性。此設定也包含先前為 YARN NodeManager 磁碟運作狀態檢查程式指定的值，因此這些值不會被覆寫。

1. 在 instanceFleet.json 中準備以下內容，並將其儲存在您要執行命令的相同目錄中。

   ```
   {
       "InstanceFleetId":"if-1xxxxxxx9",
       "InstanceTypeConfigs": [
               {
                   "InstanceType": "m5.xlarge",
                   other InstanceTypeConfig fields
                   "Configurations": [
                       {
                           "Classification": "yarn-site",
                           "Properties": {
                               "yarn.nodemanager.disk-health-checker.enable":"true",
                               "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"100.0",
                               "yarn.nodemanager.vmem-check-enabled":"true",
                               "yarn.nodemanager.vmem-pmem-ratio":"3.0"
                           }
                       }
                   ]
               },
               {
                   "InstanceType": "r5.xlarge",
                   other InstanceTypeConfig fields
                   "Configurations": [
                       {
                           "Classification": "yarn-site",
                           "Properties": {
                               "yarn.nodemanager.disk-health-checker.enable":"false",
                               "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"70.0"
                           }
                       }
                   ]
               }
           ]      
   }
   ```

1. 執行下列命令。

   ```
   aws emr modify-instance-fleet \
   --cluster-id j-2AL4XXXXXX5T9 \
   --region us-west-2 \
   --instance-fleet instanceFleet.json
   ```

------
#### [ using the Java SDK ]

**注意**  
在下列範例中，將 **j-2AL4XXXXXX5T9** 取代為您的叢集 ID，並將 **if-1xxxxxxx9** 取代為您的執行個體機群 ID。

下列程式碼片段使用適用於 Java 的 AWS SDK 為執行個體機群提供新組態。

```
AWSCredentials credentials = new BasicAWSCredentials("access-key", "secret-key");
AmazonElasticMapReduce emr = new AmazonElasticMapReduceClient(credentials);

Map<String,String> hiveProperties = new HashMap<String,String>();
hiveProperties.put("hive.join.emit.interval","1000");
hiveProperties.put("hive.merge.mapfiles","true");
        
Configuration newConfiguration = new Configuration()
    .withClassification("hive-site")
    .withProperties(hiveProperties);
    
List<InstanceTypeConfig> instanceTypeConfigList = new ArrayList<>();

for (InstanceTypeConfig instanceTypeConfig : currentInstanceTypeConfigList) {
    instanceTypeConfigList.add(new InstanceTypeConfig()
        .withInstanceType(instanceTypeConfig.getInstanceType())
        .withBidPrice(instanceTypeConfig.getBidPrice())
        .withWeightedCapacity(instanceTypeConfig.getWeightedCapacity())
        .withConfigurations(newConfiguration)
    );
}

InstanceFleetModifyConfig instanceFleetModifyConfig = new InstanceFleetModifyConfig()
    .withInstanceFleetId("if-1xxxxxxx9")
    .withInstanceTypeConfigs(instanceTypeConfigList);
    
ModifyInstanceFleetRequest modifyInstanceFleetRequest = new ModifyInstanceFleetRequest()
    .withInstanceFleet(instanceFleetModifyConfig)
    .withClusterId("j-2AL4XXXXXX5T9");

emrClient.modifyInstanceFleet(modifyInstanceFleetRequest);
```

------

## 執行個體機群重新設定疑難排解
<a name="instance-fleet-reconfiguration-troubleshooting"></a>

如果執行個體機群中任何執行個體類型的重新設定程序失敗，Amazon EMR 會還原進行中的重新設定，並使用 AAmazon CloudWatch Events 事件記錄失敗訊息。此事件提供重新組態失敗的簡短摘要。它會列出重新組態失敗的執行個體，以及對應的失敗訊息。以下是失敗訊息範例。

`Amazon EMR couldn't revert the instance fleet if-1xxxxxxx9 in the Amazon EMR cluster j-2AL4XXXXXX5T9 (ExampleClusterName) to the previously successful configuration at 2021-01-01 00:00 UTC. The reconfiguration reversion failed because of Instance i-xxxxxxx1, i-xxxxxxx2, i-xxxxxxx3 failed with message "This is an example failure message"...`

### 存取節點佈建日誌
<a name="instance-fleet-reconfiguration-troubleshooting-connect-node"></a>

使用 SSH 連接至重新組態失敗的節點。如需說明，請參閱 *Amazon Elastic Compute Cloud* 中的[連線至 Linux 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html)。

------
#### [ Accessing logs by connecting to a node ]

1. 導覽至下列目錄，其中包含節點佈建日誌檔案。

   ```
   /mnt/var/log/provision-node/
   ```

1. 開啟報告子目錄，並搜尋節點佈建報告以進行重新設定。報告目錄會依重新設定版本編號、通用唯一識別碼 (UUID)、Amazon EC2 執行個體 IP 地址和時間戳記來組織日誌。每個報告都是壓縮的 YAML 檔案，其中包含有關重新組態程序的詳細資訊。以下是報告檔案名稱和路徑的範例。

   ```
   /reports/2/ca598xxx-cxxx-4xxx-bxxx-6dbxxxxxxxxx/ip-10-73-xxx-xxx.ec2.internal/202104061715.yaml.gz
   ```

1. 您可以使用 zless 等檔案檢視器來檢查報告，如下列範例所示。

   ```
   zless 202104061715.yaml.gz
   ```

------
#### [ Accessing logs using Amazon S3 ]

登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。當您設定叢集以封存日誌檔案時，開啟指定的 Amazon S3 儲存貯體。

1.  導覽至下列資料夾，其中包含節點佈建日誌檔案：

   ```
   amzn-s3-demo-bucket/elasticmapreduce/cluster id/node/instance id/provision-node/
   ```

1. 開啟報告資料夾，並搜尋節點佈建報告以進行重新設定。報告資料夾會依重新設定版本編號、通用唯一識別碼 (UUID)、Amazon EC2 執行個體 IP 地址和時間戳記來組織日誌。每個報告都是壓縮的 YAML 檔案，其中包含有關重新組態程序的詳細資訊。以下是報告檔案名稱和路徑的範例。

   ```
   /reports/2/ca598xxx-cxxx-4xxx-bxxx-6dbxxxxxxxxx/ip-10-73-xxx-xxx.ec2.internal/202104061715.yaml.gz
   ```

若要檢視日誌檔案，您可以將其作為文字檔案從 Amazon S3 下載至本機電腦。如需指示，請參閱[下載物件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/download-objects.html)。

------

每個日誌檔案都包含關聯重新組態的詳細佈建報告。若要尋找錯誤訊息資訊，您可以搜尋報告的 `err` 日誌層級。報告格式取決於叢集上的 Amazon EMR 版本。下列範例顯示 Amazon EMR 發行版本 5.32.0 和 6.2.0 及更新版本的錯誤資訊，請使用下列格式：

```
- level: err
  message: 'Example detailed error message.'
  source: Puppet
  tags:
  - err
  time: '2021-01-01 00:00:00.000000 +00:00'
  file: 
  line:
```

# 在 Amazon EMR 中對執行個體機群使用容量保留
<a name="on-demand-capacity-reservations"></a>

若要啟動具有容量保留選項的隨需執行個體機群，請附接使用容量保留選項所需的其他服務角色許可。由於容量保留選項必須與隨需配置策略一起使用，因此您也必須在服務角色和受管政策中包含配置策略所需的許可。如需詳細資訊，請參閱[配置策略許可配置策略所需的 IAM 許可](emr-instance-fleet.md#create-cluster-allocation-policy)。

Amazon EMR 同時支援開放和目標容量保留。下列主題顯示可與 `RunJobFlow` 動作或 `create-cluster` 命令搭配使用的執行個體機群組態，以使用隨需容量保留來啟動執行個體機群。

## 盡量使用開放容量保留
<a name="on-demand-capacity-reservations-best-effort"></a>

如果叢集的隨需執行個體與您帳戶中可用的開放容量保留 (執行個體類型、平台、租用和可用區域) 的屬性相符，則會自動套用容量保留。但是，並不保證會使用您的容量保留。對於佈建叢集，Amazon EMR 會評估啟動請求中指定的所有執行個體集區，並使用價格最低且容量足以啟動所有請求的核心節點的執行個體集區。系統會自動套用與執行個體集區相符的可用開放容量保留。如果可用的開放容量保留與執行個體集區不符，則保持未使用狀態。

佈建核心節點後，即會選取並修正可用區域。Amazon EMR 在選取的可用區域中將任務節點佈建到執行個體集區中，從價格最低的節點開始，直到佈建所有任務節點為止。系統會自動套用與執行個體集區相符的可用開放容量保留。

以下是 Amazon EMR 容量配置邏輯的使用案例，可盡量使用開放容量保留。

**範例 1：啟動請求中價格最低的執行個體集區具有可用的開放容量保留**

在這種情況下，Amazon EMR 會透過隨需執行個體在價格最低的執行個體集區中啟動容量。系統會自動使用該執行個體集區中的可用開放容量保留。


|  |  | 
| --- |--- |
| On-Demand Strategy | lowest-price | 
| Requested Capacity | 100 | 
| Instance Type | c5.xlarge | m5.xlarge | r5.xlarge | 
| Available Open capacity reservations | 150 | 100 | 100 | 
| On-Demand Price | \$1 | \$1\$1 | \$1\$1\$1 | 
| 佈建的執行個體 | 100 | - | - | 
| --- |--- |--- |--- |
| 使用的開放容量保留 | 100 | - | - | 
| --- |--- |--- |--- |
| 可用的開放容量保留 | 50 | 100 | 100 | 
| --- |--- |--- |--- |

啟動執行個體機群後，您可以執行 [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html) 以查看未使用的容量保留的剩餘數量。

**範例 2：啟動請求中價格最低的執行個體集區沒有可用的開放容量保留**

在這種情況下，Amazon EMR 會透過隨需執行個體在價格最低的執行個體集區中啟動容量。但是，您的開放容量保留保持未使用狀態。


|  |  | 
| --- |--- |
| On-Demand Strategy | lowest-price | 
| Requested Capacity | 100 | 
| Instance Type | c5.xlarge | m5.xlarge | r5.xlarge | 
|  可用的開放容量保留  | - | - | 100 | 
| On-Demand Price | \$1 | \$1\$1 | \$1\$1\$1 | 
| 佈建的執行個體 | 100 | - | - | 
| --- |--- |--- |--- |
| 使用的開放容量保留 | - | - | - | 
| --- |--- |--- |--- |
| 可用的開放容量保留 | - | - | 100 | 
| --- |--- |--- |--- |

**設定執行個體機群以盡量使用開放容量保留**

當您使用 `RunJobFlow` 動作建立執行個體機群型叢集時，將隨需配置策略設定為 `lowest-price`，將容量保留選項的 `CapacityReservationPreference` 設定為 `open`。或者，如果您將此欄位保留空白，Amazon EMR 會將隨需執行個體的容量保留偏好設定預設為 `open`。

```
"LaunchSpecifications": 
    {"OnDemandSpecification": {
        "AllocationStrategy": "lowest-price",
        "CapacityReservationOptions":
         {
            "CapacityReservationPreference": "open"
         }
        }
    }
```

您也可以使用 Amazon EMR CLI 建立使用開放容量保留的執行個體機群型叢集。

```
aws emr create-cluster \
	--name 'open-ODCR-cluster' \
	--release-label emr-5.30.0 \
	--service-role EMR_DefaultRole \
	--ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \
	--instance-fleets InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=c4.xlarge}'] \
	  InstanceFleetType=CORE,TargetOnDemandCapacity=100,InstanceTypeConfigs=['{InstanceType=c5.xlarge},{InstanceType=m5.xlarge},{InstanceType=r5.xlarge}'],\
	  LaunchSpecifications={OnDemandSpecification='{AllocationStrategy=lowest-price,CapacityReservationOptions={CapacityReservationPreference=open}}'}
```

其中：
+ 將 `open-ODCR-cluster` 取代為使用開放容量保留的叢集名稱。
+ 將 `subnet-22XXXX01` 取代為子網路 ID。

## 先使用開放容量保留
<a name="on-demand-capacity-reservations-first"></a>

在佈建 Amazon EMR 叢集時，您可以選擇覆寫價格最低的配置策略，並先使用可用的開放容量保留排定優先順序。在這種情況下，Amazon EMR 會評估具有啟動請求中指定的容量保留的所有執行個體集區，並使用價格最低且容量足以啟動所有請求的核心節點的執行個體集區。如果具有容量保留的任何執行個體集區都沒有足夠的容量供請求的核心節點使用，則 Amazon EMR 會回退至上一主題中所述的最佳情況。也就是說，Amazon EMR 會重新評估在啟動請求中指定的所有執行個體集區，並使用價格最低且容量足以啟動所有請求的核心節點的執行個體集區。系統會自動套用與執行個體集區相符的可用開放容量保留。如果可用的開放容量保留與執行個體集區不符，則保持未使用狀態。

佈建核心節點後，即會選取並修正可用區域。Amazon EMR 在所選可用區域中將任務節點佈建到具有容量保留的執行個體集區中，從價格最低的節點開始，直到佈建所有任務節點為止。Amazon EMR 會先使用所選可用區域中每個執行個體集區中可用的開放容量保留，而且只有在必要時，才會使用價格最低的策略來佈建任何剩餘的任務節點。

以下是 Amazon EMR 容量配置邏輯的使用案例，可先使用開放容量保留。

**範例 1：**啟動請求中具有可用開放容量保留的執行個體集區具有足夠的容量供核心節點使用****

在這種情況下，無論執行個體集區價格為何，Amazon EMR 都會在具有可用開放容量保留的執行個體集區中啟動容量。因此，會盡可能使用您的開放容量保留，直到佈建所有核心節點為止。


|  |  | 
| --- |--- |
| On-Demand Strategy | lowest-price | 
| Requested Capacity | 100 | 
| Usage Strategy | use-capacity-reservations-first | 
| Instance Type | c5.xlarge | m5.xlarge | r5.xlarge | 
| Available Open capacity reservations | - | - | 150 | 
| On-Demand Price | \$1 | \$1\$1 | \$1\$1\$1 | 
| 佈建的執行個體 | - | - | 100 | 
| --- |--- |--- |--- |
| 使用的開放容量保留 | - | - | 100 | 
| --- |--- |--- |--- |
| 可用的開放容量保留 | - | - | 50 | 
| --- |--- |--- |--- |

**範例 2：**啟動請求中具有可用開放容量保留的執行個體集區沒有足夠的容量供核心節點使用****

在這種情況下，Amazon EMR 會回退至使用價格最低的策略啟動核心節點，並盡量使用容量保留。


|  |  | 
| --- |--- |
| On-Demand Strategy | lowest-price | 
| Requested Capacity | 100 | 
| Usage Strategy | use-capacity-reservations-first | 
| Instance Type | c5.xlarge | m5.xlarge | r5.xlarge | 
| Available Open capacity reservations | 10 | 50 | 50 | 
| On-Demand Price | \$1 | \$1\$1 | \$1\$1\$1 | 
| 佈建的執行個體 | 100 | - | - | 
| --- |--- |--- |--- |
| 使用的開放容量保留 | 10 | - | - | 
| --- |--- |--- |--- |
| 可用的開放容量保留 | - | 50 | 50 | 
| --- |--- |--- |--- |

啟動執行個體機群後，您可以執行 [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html) 以查看未使用的容量保留的剩餘數量。

**設定執行個體機群以先使用開放容量保留**

當您使用 `RunJobFlow` 動作建立執行個體機群型叢集時，將隨需配置策略設定為 `lowest-price`，將 `CapacityReservationOptions` 的 `UsageStrategy` 設定為 `use-capacity-reservations-first`。

```
"LaunchSpecifications": 
    {"OnDemandSpecification": {
        "AllocationStrategy": "lowest-price",
        "CapacityReservationOptions":
         {
            "UsageStrategy": "use-capacity-reservations-first"
         }
       }
    }
```

您也可以使用 Amazon EMR CLI 先建立使用容量保留的執行個體機群型叢集。

```
aws emr create-cluster \
  --name 'use-CR-first-cluster' \
  --release-label emr-5.30.0 \
  --service-role EMR_DefaultRole \
  --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \
  --instance-fleets \
    InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=c4.xlarge}'] \
    InstanceFleetType=CORE,TargetOnDemandCapacity=100,InstanceTypeConfigs=['{InstanceType=c5.xlarge},{InstanceType=m5.xlarge},{InstanceType=r5.xlarge}'],\
LaunchSpecifications={OnDemandSpecification='{AllocationStrategy=lowest-price,CapacityReservationOptions={UsageStrategy=use-capacity-reservations-first}}'}
```

其中：
+ 將 `use-CR-first-cluster` 取代為使用開放容量保留的叢集名稱。
+ 將 `subnet-22XXXX01` 取代為子網路 ID。

## 先使用目標容量保留
<a name="on-demand-capacity-reservations-targeted"></a>

在佈建 Amazon EMR 叢集時，您可以選擇覆寫價格最低的配置策略，並先使用可用的目標容量保留排定優先順序。在這種情況下，Amazon EMR 會評估具有啟動請求中指定的目標容量保留的所有執行個體集區，並選擇價格最低且容量足以啟動所有請求的核心節點的執行個體集區。如果具有目標容量保留的任何執行個體集區都沒有足夠的容量供核心節點使用，Amazon EMR 會回退至先前所述的最佳情況。也就是說，Amazon EMR 會重新評估在啟動請求中指定的所有執行個體集區，並選取價格最低且容量足以啟動所有請求的核心節點的執行個體集區。系統會自動套用與執行個體集區相符的可用開放容量保留。但是，目標容量保留保持未使用狀態。

佈建核心節點後，即會選取並修正可用區域。Amazon EMR 在所選可用區域中將任務節點佈建到具有目標容量保留的執行個體集區中，從價格最低的節點開始，直到佈建所有任務節點為止。Amazon EMR 會先嘗試使用選取的可用區域中每個執行個體集區中可用的目標容量保留。然後，只有在需要時，Amazon EMR 才會使用價格最低的策略來佈建任何剩餘的任務節點。

以下是 Amazon EMR 容量配置邏輯的使用案例，可先使用目標容量保留。

**範例 1：啟動請求中具有可用目標容量保留的執行個體集區具有足夠的容量供核心節點使用**

在這種情況下，無論執行個體集區價格為何，Amazon EMR 都會在具有可用目標容量保留的執行個體集區中啟動容量。因此，會盡可能使用您的目標容量保留，直到佈建所有核心節點為止。


|  |  | 
| --- |--- |
| On-Demand Strategy | lowest-price | 
| Usage Strategy | use-capacity-reservations-first | 
| Requested Capacity | 100 | 
| Instance Type | c5.xlarge | m5.xlarge | r5.xlarge | 
| Available targeted capacity reservations | - | - | 150 | 
| On-Demand Price | \$1 | \$1\$1 | \$1\$1\$1 | 
| 佈建的執行個體 | - | - | 100 | 
| --- |--- |--- |--- |
| 使用的目標容量保留 | - | - | 100 | 
| --- |--- |--- |--- |
| 可用的目標容量保留 | - | - | 50 | 
| --- |--- |--- |--- |

**Example 範例 2：啟動請求中具有可用目標容量保留的執行個體集區沒有足夠的容量供核心節點使用**  


|  |  | 
| --- |--- |
| On-Demand Strategy | lowest-price | 
| Requested Capacity | 100 | 
| Usage Strategy | use-capacity-reservations-first | 
| Instance Type | c5.xlarge | m5.xlarge | r5.xlarge | 
| Available targeted capacity reservations | 10 | 50 | 50 | 
| On-Demand Price | \$1 | \$1\$1 | \$1\$1\$1 | 
| 佈建的執行個體 | 100 | - | - | 
| --- |--- |--- |--- |
| 使用的目標容量保留 | 10 | - | - | 
| --- |--- |--- |--- |
| 可用的目標容量保留 | - | 50 | 50 | 
| --- |--- |--- |--- |

啟動執行個體機群後，您可以執行 [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html) 以查看未使用的容量保留的剩餘數量。

**設定執行個體機群以先使用目標容量保留**

當您使用 `RunJobFlow` 動作建立執行個體機群型叢集時，將隨需配置策略設定為 `lowest-price`，將 `CapacityReservationOptions` 的 `UsageStrategy` 設定為 `use-capacity-reservations-first`，將 `CapacityReservationOptions` 的 `CapacityReservationResourceGroupArn` 設定為 `<your resource group ARN>`。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[使用容量保留](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/capacity-reservations-using.html)。

```
"LaunchSpecifications": 
    {"OnDemandSpecification": {
        "AllocationStrategy": "lowest-price",
        "CapacityReservationOptions":
         {
            "UsageStrategy": "use-capacity-reservations-first",
            "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup"
         }
       }
    }
```

其中，將 `arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup` 取代為您的資源群組 ARN。

您也可以使用 Amazon EMR CLI 建立使用目標容量保留的執行個體機群型叢集。

```
aws emr create-cluster \
  --name 'targeted-CR-cluster' \
  --release-label emr-5.30.0 \
  --service-role EMR_DefaultRole \
  --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \
  --instance-fleets InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=c4.xlarge}'] \
    InstanceFleetType=CORE,TargetOnDemandCapacity=100,\
InstanceTypeConfigs=['{InstanceType=c5.xlarge},{InstanceType=m5.xlarge},{InstanceType=r5.xlarge}'],\
LaunchSpecifications={OnDemandSpecification='{AllocationStrategy=lowest-price,CapacityReservationOptions={UsageStrategy=use-capacity-reservations-first,CapacityReservationResourceGroupArn=arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup}}'}
```

其中：
+ 將 `targeted-CR-cluster` 取代為使用目標容量保留的叢集名稱。
+ 將 `subnet-22XXXX01` 取代為子網路 ID。
+ 將 `arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup` 取代為您的資源群組 ARN。

## 避免使用可用的開放容量保留
<a name="on-demand-capacity-reservations-avoiding"></a>

**Example**  
如果您想要避免在啟動 Amazon EMR 叢集時意外地使用任何開放容量保留，請將隨需配置策略設定為 `lowest-price`，將 `CapacityReservationOptions` 的 `CapacityReservationPreference` 設定為 `none`。否則，Amazon EMR 會將隨需執行個體的容量保留偏好設定預設為 `open`，並盡量使用可用的開放容量保留。  

```
"LaunchSpecifications": 
    {"OnDemandSpecification": {
        "AllocationStrategy": "lowest-price",
        "CapacityReservationOptions":
         {
            "CapacityReservationPreference": "none"
         }
       }
    }
```
您也可以使用 Amazon EMR CLI 建立不使用任何開放容量保留的執行個體機群型叢集。  

```
aws emr create-cluster \
  --name 'none-CR-cluster' \
  --release-label emr-5.30.0 \
  --service-role EMR_DefaultRole \
  --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \
  --instance-fleets \
    InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=c4.xlarge}'] \
    InstanceFleetType=CORE,TargetOnDemandCapacity=100,InstanceTypeConfigs=['{InstanceType=c5.xlarge},{InstanceType=m5.xlarge},{InstanceType=r5.xlarge}'],\
LaunchSpecifications={OnDemandSpecification='{AllocationStrategy=lowest-price,CapacityReservationOptions={CapacityReservationPreference=none}}'}
```
其中：  
+ 將 `none-CR-cluster` 取代為未使用任何開放容量保留的叢集名稱。
+ 將 `subnet-22XXXX01` 取代為子網路 ID。

## 使用容量保留的案例
<a name="on-demand-capacity-reservations-scenarios"></a>

在下列案例中，您可以從使用容量保留中受益。

**案例 1：使用容量保留輪換長時間執行的叢集**  
在輪換長時間執行的叢集時，您可能對佈建的新執行個體的執行個體類型和可用區域有嚴格的要求。透過容量保留，您可以使用容量保證在不中斷的情況下完成叢集輪換。

![\[使用可用容量保留的叢集輪換\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/images/odcr-longrunning-cluster-diagram.png)


**案例 2：使用容量保留佈建連續的短期叢集**  
您還可以使用容量保留為個別工作負載佈建一組連續的短期叢集，以便在終止叢集時，下一個叢集可以使用容量保留。您可以使用目標容量保留，以確保只有預定的叢集使用容量保留。

![\[使用可用容量保留的短期叢集佈建\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/images/odcr-short-cluster-diagram.png)


# 為您的 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 行接續字元 (\$1) 是為了提高可讀性。它們可以在 Linux 命令中移除或使用。對於 Windows，請將其移除或取代為插入符號 (^)。

```
aws emr create-cluster --name "MySpotCluster" \
  --release-label emr-7.12.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\$164 架構自訂 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");
```

# Amazon EMR 叢集的可用區域彈性
<a name="emr-flexibility"></a>

每個 AWS 區域 都有多個隔離的位置，稱為可用區域。在啟動執行個體時，您可以在使用的 AWS 區域 中選擇性指定可用區域 (AZ)。[可用區域彈性](#emr-flexibility-az)是指執行個體跨多個 AZ 分佈。如果一個執行個體發生故障，您可以設計應用程式，以便其他 AZ 中的執行個體可以處理請求。如需有關可用區域的詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[區域和分區](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-availability-zones)。

[執行個體彈性](#emr-flexibility-types)是指使用多種執行個體類型來滿足容量需求。透過執行個體表達彈性時，您可以跨執行個體大小、系列和世代使用彙總容量。與使用單一執行個體類型的叢集相比，更大彈性提高了尋找和配置所需運算容量的機會。

與具有單一執行個體類型或 AZ 的叢集相比，執行個體和可用區域彈性可減少[容量不足錯誤 (ICE)](emr-events-response-insuff-capacity.md) 和 Spot 中斷。使用此處涵蓋的最佳實務來確定在知道初始執行個體系列和大小後要多樣化的執行個體。此方法可最大限度地提高 Amazon EC2 容量集區的可用性，同時將效能和成本差異降至最低。

## 靈活設定可用區域
<a name="emr-flexibility-az"></a>

建議您設定所有可用區域以用於虛擬私有雲端 (VPC)，並為 EMR 叢集選取這些可用區域。叢集必須僅存在於一個可用區域，但使用 Amazon EMR 執行個體機群，您可以為不同的可用區域選取多個子網路。當 Amazon EMR 啟動叢集時，它會在這些子網路中尋找您指定的執行個體和購買選項。在為多個子網路佈建 EMR 叢集時，與單一子網路中的叢集相比，叢集可以存取更深層的 Amazon EC2 容量集區。

如果您必須排定特定數量的可用區域優先順序，以便在 EMR 叢集的虛擬私有雲端 (VPC) 中使用，則可以利用 Amazon EC2 的 Spot 配置分數功能。使用 Spot 配置評分，您可以指定 Spot 執行個體的運算需求，然後 EC2 會傳回前十 AWS 區域 個或可用區域，以 1 到 10 的規模評分。分數 10 表示您的 Spot 請求很可能成功；分數 1 表示您的 Spot 請求不可能成功。如需如何使用 Spot 配置分數的詳細資訊，請參閱《*Amazon EC2 使用者指南》中的* [Spot 配置分數](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html)。

## 靈活設定執行個體類型
<a name="emr-flexibility-types"></a>

執行個體彈性是指使用多種執行個體類型來滿足容量需求。執行個體彈性同時有利於 Amazon EC2 Spot 和隨需執行個體的使用。透過 Spot 執行個體，執行個體彈性可讓 Amazon EC2 使用即時容量資料從更深層的容量集區啟動執行個體。也會預測哪些執行個體最可用。這樣可減少中斷情況，且可以降低工作負載的整體成本。透過隨需執行個體，執行個體彈性可減少總容量佈建在更多執行個體集區中時的容量不足錯誤 (ICE)。

對於**執行個體群組**叢集，您最多可指定 50 個 EC2 執行個體類型。對於具有配置策略的**執行個體叢集**，您可以為每個主要、核心和任務節點群組指定最多 30 個 EC2 執行個體類型。範圍更廣泛的執行個體可改善執行個體彈性的好處。

### 表達執行個體彈性
<a name="emr-flexibility-express"></a>

請考慮下列最佳實務，以表達應用程式的執行個體彈性。

**Topics**
+ [確定執行個體系列和大小](#emr-flexibility-express-size)
+ [包含其他執行個體](#emr-flexibility-express-include)

#### 確定執行個體系列和大小
<a name="emr-flexibility-express-size"></a>

Amazon EMR 針對不同的使用案例支援數種執行個體類型。這些執行個體類型列在 [Amazon EMR 支援的執行個體類型](emr-supported-instance-types.md) 文件中。每種執行個體類型都屬於一個執行個體系列，該執行個體系列描述了該類型針對哪些應用程式進行了優化。

對於新的工作負載，您應使用一般用途系列中的執行個體類型 (例如 `m5` 或 `c5`) 進行基準測試。然後，從 Ganglia 和 Amazon CloudWatch 監控作業系統和 YARN 指標，以確定峰值負載時的系統瓶頸。瓶頸包括 CPU、記憶體、儲存和 I/O 輸出。識別瓶頸後，針對您的執行個體類型選擇運算優化、記憶體優化、儲存優化或其他適當的執行個體系列。如需詳細資訊，請參閱 GitHub 上 Amazon EMR 最佳實務指南中的[為 Spark 工作負載確定正確的基礎設施](https://github.com/aws/aws-emr-best-practices/blob/main/website/docs/bestpractices/Applications/Spark/best_practices.md#bp-512-----determine-right-infrastructure-for-your-spark-workloads)頁面。

接下來，識別您的應用程式需要的最小 YARN 容器或 Spark 執行程式。這是適合容器的最小執行個體大小，以及叢集的最小執行個體大小。使用此指標來確定您可以進一步多樣化的執行個體。較小的執行個體將提供更大的執行個體彈性。

為了獲得最大執行個體彈性，您應利用盡可能多的執行個體。建議您使用具有類似硬體規格的執行個體進行多樣化。這樣可最大限度地存取 EC2 容量集區，同時將成本和效能差異降至最低。大小多樣化。為此，請先排定 AWS Graviton 和前幾代產品的優先順序。一般而言，請嘗試為每個工作負載靈活地使用至少 15 種執行個體類型。建議您從一般用途、運算優化或記憶體優化執行個體開始。這些執行個體類型將提供最大的彈性。

#### 包含其他執行個體
<a name="emr-flexibility-express-include"></a>

為實現最大程度的多樣化，請包含其他執行個體類型。先排定執行個體大小、Graviton 和世代彈性的優先順序。這可讓您存取具有類似成本和效能設定檔的其他 EC2 容量集區。如果您由於 ICE 或 Spot 中斷而需要更多彈性，請考慮變體和系列彈性。每種方法都具有取決於您的使用案例和需求的權衡。
+ **大小彈性** – 首先，使用相同系列中不同大小的執行個體進行多樣化。相同系列內的執行個體提供相同的成本和效能，但可以在每台主機上啟動不同數量的容器。例如，如果您需要的最小執行程式大小為 2vCPU 和 8Gb 記憶體，則執行個體大小下限為 `m5.xlarge`。為了獲得大小彈性，請包含 `m5.xlarge`、`m5.2xlarge`、`m5.4xlarge`、`m5.8xlarge`、`m5.12xlarge`、`m5.16xlarge` 和 `m5.24xlarge`。
+ **Graviton 彈性** – 除了大小之外，您還可以使用 Graviton 執行個體進行多樣化。Graviton 執行個體採用 AWS Graviton2 處理器，可為 Amazon EC2 中的雲端工作負載提供最佳價格效能。例如，在最小執行個體大小為 `m5.xlarge` 時，您可以針對 Graviton 彈性包含 `m6g.xlarge`、`m6g.2xlarge`、`m6g.4xlarge`、`m6g.8xlarge` 和 `m6g.16xlarge`。
+ **世代彈性** – 與 Graviton 和大小彈性類似，前一代系列的執行個體共用相同的硬體規格。這會產生類似的成本和效能設定檔，同時可存取的 Amazon EC2 集區總數也會增加。若要取得世代彈性，請包含 `m4.xlarge`、`m4.2xlarge`、`m4.10xlarge` 和 `m4.16xlarge`。
+ **系列和變體彈性**
  + **容量** – 為了優化容量，建議跨執行個體系列實現執行個體彈性。來自不同執行個體系列的一般執行個體具有更深層的執行個體集區，可協助滿足容量需求。但是，來自不同系列的執行個體會有不同的 vCPU 與記憶體比率。如果針對不同執行個體調整了預期應用程式容器的大小，這會導致使用率不足。例如，對於 `m5.xlarge`，包含運算優化執行個體 (例如 `c5`) 或記憶體優化執行個體 (例如 `r5`)，以實現執行個體系列彈性。
  + **成本** – 為了優化成本，建議跨變體實現執行個體彈性。這些執行個體的記憶體和 vCPU 比率與初始執行個體相同。與變體彈性的權衡是這些執行個體具有較小的容量集區，這可能會導致額外容量受限或更高的 Spot 中斷。以 `m5.xlarge` 為例，包括 AMD 型執行個體 (`m5a`)、SSD 型執行個體 (`m5d`) 或網路優化執行個體 (`m5n`)，以提供執行個體變體彈性。

# 設定 Spot 執行個體的 Amazon EMR 叢集執行個體類型和最佳實務
<a name="emr-plan-instances-guidelines"></a>

使用此區段中的指導方針，以協助您判斷執行個體類型、購買選項，以及在 EMR 叢集中每個節點類型要佈建的儲存量。

## 您應使用哪一種執行個體類型？
<a name="emr-instance-group-size"></a>

有數種方式可將 Amazon EC2 執行個體新增至叢集。您應選擇的方法取決於您是使用執行個體群組組態還是叢集的執行個體機群組態。
+ **執行個體群組**
  + 手動將相同類型的執行個體新增到現有核心和任務執行個體群組。
  + 手動新增任務執行個體群組，這些群組可以使用不同的執行個體類型。
  + 在 Amazon EMR 中為執行個體群組設定自動擴展，根據您指定的 Amazon CloudWatch 指標值來自動新增和移除執行個體。如需詳細資訊，請參閱[使用 Amazon EMR 叢集擴展來調整不斷變化的工作負載](emr-scale-on-demand.md)。
+ **執行個體機群**
  + 新增單一任務執行個體機群。
  + 針對現有核心和任務執行個體機群，變更隨需和 Spot 執行個體的目標容量。如需詳細資訊，請參閱[為您的 Amazon EMR 叢集規劃和設定執行個體機群](emr-instance-fleet.md)。

計劃叢集執行個體的其中一種方法即是使用代表範例資料集來執行測試叢集並監控叢集中節點的使用率。如需詳細資訊，請參閱[在執行工作時檢視和監控 Amazon EMR 叢集](emr-manage-view.md)。另一個方式是計算您考慮使用之執行個體的容量，並再將該值與您的資料大小進行比對。

一般而言，主節點類型，它會指派任務，不需要大量的 EC2 執行個體的處理能力；適用於 Amazon EC2 執行個體的核心節點類型，處理任務，並將資料儲存在 HDFS，需要兩個處理能力和儲存容量；適用於任務節點類型的 Amazon EC2 執行個體，不會儲存資料，只需處理能力。如需有關可用 Amazon EC2 執行個體及其組態的指導方針，請參閱 [設定 Amazon EC2 執行個體類型以搭配 Amazon EMR 使用](emr-plan-ec2-instances.md)。

 下列指導方針適用於大部分 Amazon EMR 叢集。
+ 您在 AWS 帳戶上執行的隨需 Amazon EC2 執行個體總數有 vCPU 限制 AWS 區域。如需有關 vCPU 限制以及如何為帳戶請求提高限制的詳細資訊，請參閱《Amazon EC2 Linux 執行個體使用者指南》****中的[隨需執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-on-demand-instances.html)。
+ 主節點通常不會有大量的運算需求。對於具有大量節點的叢集，或具有專門部署在主節點 (JupyterHub、Hue 等) 上的應用程式的叢集，可能需要較大的主節點，並有助於改善叢集效能。例如，請考慮將 m5.xlarge 執行個體用於小型叢集 (50 個或更少節點)，並針對較大的叢集增加到較大的執行個體類型。
+ 核心和任務節點的運算需求取決於的應用程式所執行的處理類型。您可以在一般用途執行個體類型上執行許多作業，其會根據 CPU、磁碟空間和輸入/輸出提供平衡效能。運算密集型叢集可能受惠於在 CPU 密集型執行個體上 (其在擁有的 CPU 比例大於 RAM)。資料庫和記憶體快取應用程式可能受益於在記憶體密集型執行個體上執行。網路密集型和 CPU 密集型應用程式 (如剖析、NLP 和機器學習) 可能會受益於在叢集運算執行個體上執行，其會提供較高比例的 CPU 資源與更高的網路效能。
+ 如果叢集的不同階段有不同的容量需求，您可以先從小量的核心節點開始，然後增加或降低任務節點數以滿足任務流程的各種容量需求。
+ 您可以處理的資料量取決於核心節點的容量與處理期間做為輸入和輸出之資料的大小。中繼的輸入和輸出資料集在處理期間皆位於叢集上。

## 您應何時使用 Spot 執行個體？
<a name="emr-plan-spot-instances"></a>

在 Amazon EMR 中啟動叢集時，您可以選擇在 Spot 執行個體上啟動主要、核心或任務執行個體。由於每種執行個體群組在叢集中扮演不同的角色，因此會在 Spot 執行個體上啟動每個節點類型。叢集執行時，您無法變更執行個體的購買選項。若要將隨需執行個體變更為 Spot 執行個體 (或反之亦然)，對於主節點和核心節點，您必須終止叢集並啟動新的叢集。對於任務節點，您可以啟動新的任務執行個體群組或執行個體機群，並移除舊的任務執行個體群組或執行個體機群。

**Topics**
+ [Amazon EMR 設定可避免由於任務節點 Spot 執行個體終止而造成的作業失敗](#emr-plan-spot-YARN)
+ [Spot 執行個體上的主節點](#emr-dev-master-instance-group-spot)
+ [Spot 執行個體上的核心節點](#emr-dev-core-instance-group-spot)
+ [Spot 執行個體上的任務節點](#emr-dev-task-instance-group-spot)
+ [應用程式案例的執行個體組態](#emr-plan-spot-scenarios)

### Amazon EMR 設定可避免由於任務節點 Spot 執行個體終止而造成的作業失敗
<a name="emr-plan-spot-YARN"></a>

由於 Spot 執行個體通常用於執行作業節點，因此 Amazon EMR 具有排程 YARN 作業的預設功能，因此當 Spot 執行個體上執行的作業節點終止時，執行作業不會失敗。Amazon EMR 透過允許應用程式主程序僅在核心節點上執行來達到此目的。應用程式主程序會控制執行中的作業，而且需要在作業生命週期內保持活動狀態。

Amazon EMR 5.19.0 版及更新版本使用內建 [YARN 節點標籤](https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/NodeLabel.html)功能來實現此目的。(較早版本使用代碼修補程式)。預設會設定 `yarn-site` 和 `capacity-scheduler` 組態分類中的屬性，以便 YARN capacity-scheduler 和 fair-scheduler 利用節點標籤。Amazon EMR 會自動為核心節點加上 `CORE` 標籤，並設定屬性，以便只在具有 CORE 標籤的節點上排程應用程式主節點。手動修改 yarn-site 和 capacity-scheduler 組態分類中的相關屬性，或直接修改關聯的 XML 檔案中的相關屬性，可能會破壞此功能或修改此功能。

Amazon EMR 預設會設定下列屬性和值。設定這些屬性時請務必小心。

**注意**  
從 Amazon EMR 6.x 版系列開始，YARN 節點標籤功能已預設為停用。依預設，應用程式主程序可以在核心和任務節點上執行。您可以透過設定以下屬性來啟用 YARN 節點標籤功能：  
`yarn.node-labels.enabled: true`
`yarn.node-labels.am.default-node-label-expression: 'CORE'`
+ **所有節點上的 yarn-site (yarn-site.xml)**
  + `yarn.node-labels.enabled: true`
  + `yarn.node-labels.am.default-node-label-expression: 'CORE'`
  + `yarn.node-labels.fs-store.root-dir: '/apps/yarn/nodelabels'`
  + `yarn.node-labels.configuration-type: 'distributed'`
+ **主節點和核心節點上的 yarn-site (yarn-site.xml)**
  + `yarn.nodemanager.node-labels.provider: 'config'`
  + `yarn.nodemanager.node-labels.provider.configured-node-partition: 'CORE'`
+ **所有節點上的 capacity-scheduler (capacity-scheduler.xml)**
  + `yarn.scheduler.capacity.root.accessible-node-labels: '*'`
  + `yarn.scheduler.capacity.root.accessible-node-labels.CORE.capacity: 100`
  + `yarn.scheduler.capacity.root.default.accessible-node-labels: '*'`
  + `yarn.scheduler.capacity.root.default.accessible-node-labels.CORE.capacity: 100`

### Spot 執行個體上的主節點
<a name="emr-dev-master-instance-group-spot"></a>

主節點會控制和引導叢集。主節點終止時，叢集便會結束，因此如果您執行的叢集可接受突然的終止時，您應僅以 Spot 執行個體的形式啟動主節點。如果您測試的是新應用程式就可能適用此狀況，讓叢集定期將資料保存在外部存放區 (例如 Amazon S3) 或執行的是成本較確保叢集完成還重要的叢集。

當您以 Spot 執行個體啟動主要執行個體群組，叢集在 Spot 執行個體要求履行前都不會啟動。這是在選取 Spot 價格上限時需考量的因素。

您只能在啟動叢集時新增 Spot 執行個體主節點。您無法從執行中叢集新增或移除主節點。

一般而言，如果您以 Spot 執行個體的形式執行整個叢集 (所有執行個體群組)，您只會以 Spot 執行個體的形式執行主節點。

### Spot 執行個體上的核心節點
<a name="emr-dev-core-instance-group-spot"></a>

核心節點會使用 HDFS 來處理資料和存放資訊。終止核心執行個體會導致資料遺失的風險。因此，只有在能夠承受部分 HDFS 資料遺失的情況下，才應該在 Spot 執行個體上執行核心節點。

以 Spot 執行個體的形式啟動核心執行個體群組時，Amazon EMR 在啟動執行個體群組前，會等待直到其可以佈建所有請求的核心執行個體。換句話說，如果您請求 6 個 Amazon EC2 執行個體，但只有 5 個執行個體的可用價格等於或低於最高 Spot 價格，則執行個體群組不會啟動。Amazon EMR 會持續等到 6 個 Amazon EC2 執行個體都可用，或直到您終止叢集為止。您可以變更核心執行個體群組中的 Spot 執行個體數量，以便增加執行中叢集的容量。如需使用執行個體群組以及 Spot 執行個體如何使用執行個體機群的詳細資訊，請參閱[使用執行個體機群或統一執行個體群組建立 Amazon EMR 叢集](emr-instance-group-configuration.md)。

### Spot 執行個體上的任務節點
<a name="emr-dev-task-instance-group-spot"></a>

任務節點會處理資料，但不會在 HDFS 中保存持久性資料。如果因為 Spot 價格已超出您的 Spot 價格上限，而導致任務節點終止，則資料不會遺失，且對您叢集的影響可降到最低。

當您以 Spot 執行個體的形式啟動一或多個任務執行個體群組，Amazon EMR 會使用您的 Spot 價格上限來盡可能佈建任務節點。這表示如果您請求的任務執行個體群組有 6 個節點，但只有 5 個執行個體的可用價格等於或低於最高 Spot 價格，則 Amazon EMR 會啟動具有 5 個節點的執行個體群組，並在隨後新增第 6 個節點。

以 Spot 執行個體的形式啟動任務執行個體群組是一種策略，可讓您擴展叢集容量，並同時將成本降到最低。如果您以隨需執行個體的形式啟動主節點和核心執行個體群組，即可保證其容量足以執行叢集。您可以視需要將任務執行個體新增到您的任務執行個體群組，來處理尖峰流量或加快資料處理的速度。

您可以使用 主控台或 API 新增 AWS CLI或移除任務節點。您也可以新增額外的任務群組，但您無法在建立任務群組之後將其移除。

### 應用程式案例的執行個體組態
<a name="emr-plan-spot-scenarios"></a>

下表是節點類型購買選項和設定的快速參考，這些選項和設定通常適用於各種應用程式案例。選擇連結檢視有關每個案例類型的詳細資訊。


| 應用程式案例 | 主節點購買選項 | 核心節點購買選項 | 任務節點購買選項 | 
| --- | --- | --- | --- | 
| [長時間執行的叢集和資料倉儲](#emr-dev-when-use-spot-data-warehouses) | On-Demand | 隨需執行個體或執行個體機群的混合 | Spot 或執行個體機群的混合 | 
| [成本導向工作負載](#emr-dev-when-use-spot-cost-driven) | Spot | Spot | Spot | 
| [資料關鍵工作負載](#emr-dev-when-use-spot-data-critical) | On-Demand | On-Demand | Spot 或執行個體機群的混合 | 
| [應用程式測試](#emr-dev-when-use-spot-application-testing) | Spot | Spot | Spot | 

 在某些情況下，Spot 執行個體對於執行 Amazon EMR 叢集很有用。

#### 長時間執行的叢集和資料倉儲
<a name="emr-dev-when-use-spot-data-warehouses"></a>

如果您執行的持久性 Amazon EMR 叢集在運算容量具有可預測變異 (例如資料倉儲)，您可以使用 Spot 執行個體以較低的成本來處理峰值需求。您可以隨需執行個體的形式啟動主要和核心執行個體群組來處理正常的容量，並以 Spot 執行個體的形式啟動任務執行個體群組來處理您的最高負載需求。

#### 成本導向工作負載
<a name="emr-dev-when-use-spot-cost-driven"></a>

如果您執行的是暫時性叢集，其中降低成本較完成時間更為重要，以及遺失部分工作是可接受的，您可以 Spot 執行個體的形式執行整個叢集 (主要、核心和任務執行個體群組)，來獲得節省最多成本的好處。

#### 資料關鍵工作負載
<a name="emr-dev-when-use-spot-data-critical"></a>

如果您執行的是叢集，其中降低成本較完成時間更為重要，但不可遺失部分工作時，以隨需執行個體方式來執行主要和核心執行個體群組，並透過 Spot 執行個體的一或多個任務執行個體群組補充。以隨需執行個體的形式執行主要和核心執行個體群組來確保您的資料可保存在 HDFS 中且叢集會受因 Spot 市場波動而終止的保護，同時因以 Spot 執行個體的形式執行任務執行個體群組而節省成本。

#### 應用程式測試
<a name="emr-dev-when-use-spot-application-testing"></a>

當您測試新的應用程式，以便準備讓其在生產環境中啟動，您可透過 Spot 執行個體的形式執行整個叢集 (主要、核心和任務執行個體群組) 來降低測試成本。

## 計算叢集的必要 HDFS 容量
<a name="emr-plan-instances-hdfs"></a>

 您叢集可用的 HDFS 儲存量取決於下列因素：
+ 用於核心節點的 Amazon EC2 執行個體數。
+ 會針對執行個體類型使用 Amazon EC2 執行個體儲存體的容量。如需執行個體存放區磁碟區的詳細資訊，請參閱[《Amazon EC2 使用者指南》中的 Amazon Amazon EC2 執行個體存放](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html)區。 *Amazon EC2 *
+ 附接至核心節點之 Amazon EBS 磁碟區的數量和大小。
+ 複寫係數，其會針對類似 RAID 的備援計算在 HDFS 上每個資料區塊的存放方式。根據預設，對 10 個或多個核心節點的叢集複寫係數是三，對於 4-9 個核心節點的叢集是二，以及三個或較少的節點的叢集是一。

若要對每個核心節點計算叢集的 HDFS 容量，請將執行個體儲存體磁碟區容量新增至 Amazon EBS 儲存容量 (如果有使用的話)。將結果乘以核心節點數，然後根據核心節點數將總數除以複寫係數。例如，含類型為 i2.xlarge 之 10 個核心節點叢集，其中有 800 GB 執行個體儲存體，而沒有任何附接的 Amazon EBS 磁碟區，總共會有大約 2,666 GB 可用於 HDFS (10 個節點 x 800 GB ÷ 3 複寫係數)。

 如果計算 HDFS 容量值小於您的資料，您可以透過下列方式增加 HDFS 儲存量：
+ 建立含額外 Amazon EBS 磁碟區的叢集或新增含對現有叢集有附接 Amazon EBS 磁碟區的執行個體群組
+ 新增更多核心節點
+ 選擇含更多儲存容量的 Amazon EC2 執行個體類型
+ 使用資料壓縮
+ 變更 Hadoop 組態設定以減少複寫係數

請務必小心減少複寫因素，因為其會減少 HDFS 資料備援，以及您從遺失或毀損的 HDFS 區塊中復原的叢集能力。