設定執行個體機群 - Amazon EMR

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

設定執行個體機群

注意

執行個體叢集組態僅適用於 Amazon 4.8.0 及更EMR新版本,不包括 5.0.0 和 5.0.3 版本。

Amazon 叢EMR集的執行個體叢集組態可讓您為 Amazon EC2 執行個體選擇各種佈建選項,並協助您針對叢集中的每個節點類型開發彈性的資源策略。

在執行個體機群組態中,您可以為每個機群內的隨需執行個體Spot 執行個體指定目標容量。叢集啟動時,Amazon 會EMR佈建執行個體,直到達目標為止。當 Amazon 因價格上漲或執行個體故障而在執行中的叢集中EC2回收 Spot 執行個體時,Amazon EMR 會嘗試使用您指定的任何執行個體類型取代該執行個體。這能讓 Spot 定價高峰期間重新獲得容量變得更容易。

每個叢集最多可以指定五個 Amazon EC2 執行個體類型供 Amazon EMR 完成目標時使用,或在使用或 Amazon EC2 建立叢集時,為隨需EMRAPI和 Spot 執行個體指定分配策略時,每個叢集最多可指定 30 個 Amazon 執行個體類型。 AWS CLI

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

使用執行個體叢集的考量

將執行個體叢集與 Amazon EMR 搭配使用時,請考慮下列事項。

  • 您可以具有一個執行個體機群,每種節點類型 (主要、核心、任務) 只能具有一個執行個體機群。您可以為中的每個叢集指定最多五個 Amazon EC2 執行個體類型 AWS Management Console (或使用 AWS CLI 或 Amazon EMR API 和建立叢集時,每個執行個體叢集最多可指定 30 種類型執行個體機群的配置策略)。

  • Amazon EMR 選擇任何或所有指定的 Amazon EC2 執行個體類型來佈建 Spot 和隨需購買選項。

  • 您可以針對核心機群和任務機群建立適用於 Spot 和隨需執行個體的目標容量。使用 v CPU 或指派給計入目標的每個 Amazon EC2 執行個體的一般單位。Amazon EMR 佈建執行個體,直到每個目標容量完全滿足為止。針對主機群,目標一律為一個。

  • 您可以選擇一個子網路 (可用區域) 或範圍。如果您選擇範圍,Amazon 會在可用區域中EMR佈建最適合的容量。

  • 當您為 Spot 執行個體指定目標容量時:

    • 針對每種執行個體類型,指定最大的 Spot 價格。如果競價型價格低於最高現貨價格,Amazon 就會EMR佈建競價型執行個體。您僅需支付該 Spot 價格。

    • 針對每個機群,定義逾時期間以佈建 Spot 執行個體。如果 Amazon EMR 無法佈建 Spot 容量,您可以終止叢集或改為隨需佈建容量。這僅適用於佈建叢集,並不適用於調整叢集大小。如果逾時期間在叢集大小調整程序期間結束,則未佈建的 Spot 請求將無效,而不會傳輸至隨需容量。

  • 對於每個叢集,您可以為競價型執行個體指定下列其中一種配置策略:價格容量最佳化、容量最佳化 capacity-optimized-prioritized、最低價格或跨所有集區多元化。

  • 針對每個叢集,您可以針對隨需執行個體套用下列配置策略:價格最低的策略或優先順序策略。

  • 對於具有隨需執行個體的每個叢集,您可以選擇套用容量保留選項。

  • 如果您針對執行個體叢集使用配置策略,則在為叢集選擇子網路時需要考量下列事項:EMR

    • Amazon EMR 佈建具有任務叢集的叢集時,會篩選出缺少足夠可用 IP 地址的子網路,無法佈建所請求EMR叢集的所有執行個體。這包括叢集啟動期間主要、核心和工作執行個體叢集所需的 IP 位址。EMR然後,Amazon 會利用其分配策略,根據執行個體類型和具有足夠 IP 地址的剩餘子網路來判斷執行個體集區,以啟動叢集。

    • 如果 Amazon 因為可用 IP 地址不足而EMR無法啟動整個叢集,它會嘗試識別具有足夠可用 IP 地址的子網路,以啟動基本 (核心和主要) 執行個體叢集。在這種情況下,您的任務實例叢集將進入暫停狀態,而不是因為錯誤終止叢集。

    • 如果沒有任何指定的子網路包含足夠的 IP 位址來佈建基本核心和主要執行個VALIDATION體叢集,叢集啟動將會失敗,並顯示 _。ERROR這會觸發CRITICAL嚴重性叢集終止事件,通知您無法啟動叢集。若要避免此問題,建議您增加子網路中的 IP 位址數目。

  • 啟動隨需執行個體時,您可以針對帳戶中的主要、核心和任務節點使用開放式或目標容量保留。您可能會看到具有針對執行個體叢集配置策略的隨需執行個體容量不足。我們建議您指定多個執行個體類型以分散化並減少容量不足的機會。如需詳細資訊,請參閱將容量保留與執行個體機群搭配使用

執行個體機群選項

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

設定目標容量

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

使用主控台時,Amazon EC2 執行個體類型預設會用作目標容量 vCPUs 的計數。您可以將其變更為「類屬」單位,然後指定每個EC2例證類型的計數。使用時 AWS CLI,您可以手動指定每個例證類型的類屬單位。

重要

使用選擇執行個體類型時 AWS Management Console,針對每個執行個體類型CPU顯示的 v 數目是該執行個體類型的 YARN vcore 數目,而不是該執行個體類型EC2 vCPUs 的數目。如需每個執行個體類型數目的 vCPUs 詳細資訊,請參閱 Amazon EC2 執行個體類型。

對於每個叢集,您最多可以指定五個 Amazon EC2 執行個體類型。如果您使用 AWS CLI 或 Amazon 執行個體機群的配置策略 並建立叢集 EMRAPI,則每個執行個體叢集最多可以指定 30 個EC2執行個體類型。Amazon EMR 選擇這些EC2執行個體類型的任意組合來滿足您的目標容量。由於 Amazon EMR 希望完全填滿目標容量,因此可能會發生超額。例如,如果有兩個未履行的單位,而 Amazon 只EMR能佈建一個計數為五個單位的執行個體,則該執行個體仍會佈建,表示目標容量超過三個單位。

如果您減少目標容量以調整執行中叢集大小,Amazon 會EMR嘗試完成應用程式任務並終止執行個體以符合新目標。如需詳細資訊,請參閱於任務完成時終止

啟動選項

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

注意

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

在 Amazon EMR 5.12.1 及更新版本中提供,您可以選擇啟動具有優化容量分配的競價型和隨需執行個體叢集。此配置策略選項可以在舊版本中設定, AWS Management Console 或使用 APIRunJobFlow. 請注意,您無法在新主控台中自訂配置策略。使用配置策略選項需要額外的服務角色許可。如果您對叢集使用預設 Amazon EMR 服務角色EMR_DefaultRole和受管政策 (和AmazonEMRServicePolicy_v2),則已包含配置策略選項的許可。如果您未使用預設 Amazon EMR 服務角色和受管政策,則必須新增這些角色才能使用此選項。請參閱 Amazon 的服務角EMR色EMR(角色)

如需 Spot 執行個體的詳細資訊,請參閱 Amazon EC2 使用者指南中的 Spot 執行個體。如需隨需執行個體的詳細資訊,請參閱 Amazon EC2 使用者指南中的隨需執行個體

如果您選擇以價格最低的配置策略啟動隨需執行個體機群,則可以選擇使用容量保留。您可以使用 Amazon 設定容量保留選項EMRAPIRunJobFlow。容量保留需要其他服務角色許可,您必須新增這些許可才能使用這些選項。請參閱 配置策略許可。請注意,您無法在新的主控台中自訂容量保留。

多個子網路 (可用區域) 選項

使用執行個體叢集時,您可以在一個內指定多個 Amazon EC2 子網路VPC,每個子網路都對應於不同的可用區域。如果您使用 EC2-Classic,請明確指定可用區域。Amazon 會根據您的叢集規格EMR識別最佳可用區域以啟動執行個體。僅一律在一個可用區域中佈建執行個體。您可以選取私有子網路或公用子網路,但不能混合使用這兩個子網路,而且您指定的子網路必須位於相同的內部。VPC

主節點組態

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

執行個體機群的配置策略

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

隨需執行個體的配置策略

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

lowest-price(預設值)

最低價格配置策略會從具有可用容量的最低價集區啟動隨需執行個體。如果價格最低的集區沒有可用容量,則隨需執行個體來自下一個價格最低且具有可用容量的集區。

prioritized

優先配置策略可讓您針對執行個體叢集的每個執行個體類型使用優先順序值。Amazon EMR 推出具有最高優先順序的隨需執行個體。如果您使用此策略,則必須為至少一個執行個體類型設定優先順序。如果您未設定執行個體類型的優先順序值,Amazon EMR 會將最低優先順序指派給該執行個體類型。叢集中的每個執行個體叢集 (主要、核心或工作) 對於指定執行個體類型,都可以有不同的優先順序值。

注意

如果您使用 capacity-optimized-prioritizedSpot 分配策略,Amazon 會在您設定優先順序時對隨需執行個體和 Spot 執行個體EMR套用相同的優先順序。

Spot 執行個體的配置策略

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

price-capacity-optimized (建議)

價格容量優化配置策略根據要啟動的執行個體數量從可用容量最高且價格最低的 Spot 執行個體集區中啟動 Spot 執行個體。因此,價格容量優化策略通常具有較高的機會獲得 Spot 容量,並提供較低的中斷率。這是 Amazon 6.10.0 及更高EMR版本的預設策略。

capacity-optimized

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

capacity-optimized-prioritized

capacity-optimized-prioritized 配置策略可讓您為執行個體叢集中的每個執行個體類型指定優先順序值。Amazon 首先針對容量進行優EMR化,但它會盡最大努力遵守執行個體類型優先順序,例如優先順序不會對叢集佈建最佳容量的能力造成重大影響。如果您的工作負載必須有最少的中斷量,但仍需要特定執行個體類型,我們建議您使用此選項。如果您使用此策略,則必須為至少一個執行個體類型設定優先順序。如果您未為任何執行個體類型設定優先順序,Amazon EMR 會將最低優先順序值指派給該執行個體類型。叢集中的每個執行個體叢集 (主要、核心或工作) 對於指定執行個體類型,都可以有不同的優先順序值。

注意

如果您使用優先順序的隨需配置策略,Amazon 會在您設定優先順序時,對隨需和 Spot 執行個體EMR套用相同的優先順序值。

diversified

透過多元化的配置策略,Amazon 可EC2將 Spot 執行個體分配到所有 Spot 容量集區。

lowest-price

價格最低的配置策略會從價格最低且具有可用容量的集區中啟動 Spot 執行個體。如果價格最低的集區沒有可用容量,Spot 執行個體來自下一個價格最低且具有可用容量的集區。如果儲存池在滿足您要求的容量之前已耗盡容量,Amazon EC2 叢集會從下一個最低價的集區開始繼續滿足您的請求。為確保達到所需的容量,您可能會從數個集區中接收 Spot 執行個體。由於此策略僅考慮執行個體價格,而不考慮容量可用性,因此可能會導致高中斷率。

配置策略許可

分配策略選項需要多個IAM許可,這些許可會自動包含在預設 Amazon EMR 服務角色和 Amazon EMR 受管政策 (EMR_DefaultRoleAmazonEMRServicePolicy_v2) 中。如果對叢集使用自訂服務角色或受管政策,您必須在建立叢集之前新增這些許可。如需詳細資訊,請參閱配置策略許可

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

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

不過,您也可以針對特定工作負載進行容量保留。這可讓您明確控制哪些執行個體可以在該預留容量中執行。如需有關隨需容量保留的詳細資訊,請參閱 將容量保留與執行個體機群搭配使用

配置策略的必要IAM權限

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

我們會自動將這些許可納入預設 Amazon EMR 服務角色EMR_DefaultRole和 Amazon EMR 受管政策中AmazonEMRServicePolicy_v2

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

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

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

範例 服務角色容量保留的政策文件

若要使用開放容量保留,您必須包含下列其他許可。

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

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

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

為叢集設定執行個體機群

Console
使用主控台建立具有執行個體叢集的叢集
  1. 登入 AWS Management Console,並在 https://console.aws.amazon.com/em r 開啟 Amazon EMR 主控台。

  2. EC2在左側導覽窗格的 [開EMR啟] 下,選擇 [集],然後選擇 [建立叢集]。

  3. 叢集組態下,選擇執行個體機群

  4. 針對每個節點群組,選取新增執行個體類型,然後針對主要和核心執行個體機群選擇最多 5 種執行個體類型,針對任務執行個體機群選擇最多 15 種執行個體類型。Amazon EMR 可能會在啟動叢集時佈建這些執行個體類型的任何混合。

  5. 在每個節點群組類型下,選擇每個執行個體旁邊的動作下拉式功能表,以變更以下設定:

    新增EBS磁碟區

    指定 Amazon EMR 佈建執行個體類型後要連接到執行個體類型的EBS磁碟區。

    編輯加權容量

    對於核心節點群組,請將此值變更為適合您應用程式的任何數量的單位。每個叢集執行個體類型的YARNvCores 數目會用作預設加權容量單位。您無法編輯主節點的加權容量。

    編輯 Spot 價格上限

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

  6. 或者,若要為節點新增安全群組,請展開 [網路] 區段中的EC2安全性群組 (防火牆),然後為每個節點類型選取安全性群組。

  7. 或者,如果您要使用配置策略選項,請選取套用配置策略旁邊的核取方塊,然後選取要為 Spot 執行個體指定的配置策略。如果您的 Amazon EMR 服務角色沒有必要的許可,則不應選取此選項。如需詳細資訊,請參閱執行個體機群的配置策略

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

  9. 若要啟動您的叢集,請選擇建立叢集

AWS CLI

若要使用執行個體叢集建立和啟動叢集 AWS CLI,請遵循下列準則:

  • 若要建立和啟動叢集和執行個體叢集,請使用 create-cluster 命令以及 --instance-fleet 參數。

  • 若要取得有關叢集中執行個體機群的組態詳細資訊,請使用 list-instance-fleets 命令。

  • 若要將多個自訂 Amazon Linux 新增AMIs至您正在建立的叢集,請在每個InstanceType規格中使用CustomAmiId此選項。您可以設定具有多種執行個體類型和多個自訂執行個體叢集節點,AMIs以符合您的需求。請參閱 範例:使用執行個體機群組態建立叢集

  • 若要對執行個體機群的目標容量進行變更,請使用 modify-instance-fleet 命令。

  • 若要將任務執行個體機群新增至尚未擁有任務執行個體機群的叢集中,請使用 add-instance-fleet 命令。

  • 使用帶有 add-instance-fleet 命令的CustomAmiId 引數,AMIs可以將多個自定義添加到任務實例叢集中。請參閱 範例:使用執行個體機群組態建立叢集

  • 若要在建立執行個體機群時使用配置策略選項,請更新服務角色以將範例政策文件納入下一節。

  • 若要在透過隨需配置策略建立執行個體機群時使用容量保留選項,請更新服務角色以將範例政策文件納入下一節。

  • 執行個體叢集會自動包含在預設EMR服務角色和 Amazon EMR 受管政策 (EMR_DefaultRoleAmazonEMRServicePolicy_v2) 中。如果對叢集使用自訂服務角色或自訂客戶管理政策,您必須在下節中為配置策略新增許可。

範例:使用執行個體機群組態建立叢集

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

注意

如果您之前尚未建立預設 Amazon EMR 服務角色和EC2執行個體設定檔,請在使用aws emr create-default-rolescreate-cluster命令之前先建立它們。

範例:隨需主要核心、單一執行個體類型的隨需核心、預設 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}']
範例: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}']
範例:隨需主要、具有單一執行個體類型的混合核心、單一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}']
範例:隨需主要、具有多個加權執行個體類型的現貨核心、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}'}
範例:具有多個加權執行個體類型的隨需主要、混合核心和工作、核心競價型執行個體逾時、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}']
範例:現貨主要、無核心或任務、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}]}}']
範例:多個自訂AMIs、多個執行個體類型、隨需主要、隨需核心
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}']
範例:將任務節點新增至具有多個執行個體類型和多個自訂執行中的叢集 AMIs
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}']
範例:使用組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 file 指定主要、核心和工作執行個體叢集,如下列範例所示。核心執行個體叢集使用最高 Spot 價格 (BidPrice) 作為隨需的百分比,而任務和主執行個體叢集則使用最高 Spot 價格 (BidPriceAsPercentageofOnDemandPrice) 作為中USD的字串。

[ { "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" } ] } ]

修改執行個體機群的目標容量

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

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

將任務執行個體機群新增至叢集

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

取得叢集中執行個體機群的組態詳細資訊

使用 list-instance-fleets 命令來取得叢集中執行個體機群之組態的詳細資訊。此命令會將叢集 ID 做為輸入。下列範例會針對包含主要任務執行個體群組和核心任務執行個體群組的叢集示範命令及其輸出。如需完整回應語法,請參閱 Amazon EMR API 參考ListInstanceFleets中的。

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