

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

# 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 會以 1 到 10 的規模傳回得分的前十 AWS 區域 個或可用區域。分數 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`)，以提供執行個體變體彈性。