設定執行個體機群 - Amazon EMR

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

設定執行個體機群

注意

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

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

在執行個體機群組態中,您可以為每個機群內的隨需執行個體Spot 執行個體指定目標容量。在叢集啟動時,Amazon EMR 會佈建執行個體,直到目標滿足為止。當 Amazon EC2 由於價格增加或執行個體失敗而回收正在執行的叢集中的 Spot 執行個體時,則 Amazon EMR 會嘗試將此執行個體取代為您指定的任何執行個體類型。這能讓 Spot 定價高峰期間重新獲得容量變得更容易。

每個叢集最多可以指定五個 Amazon EC2 執行個體類型供 Amazon EMR 在履行目標時使用,或者在使用或 Amazon EMR API 和隨需和競價型執行個體的配置策略建立叢集時,每個叢集最多可指定 30 個 Amazon EC2 執行個體類型。 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 和隨需執行個體的目標容量。使用計入目標的 vCPU 或指派給每個 Amazon EC2 執行個體的一般單位。直到每個目標容量完全履行為止,Amazon EMR 會佈建執行個體。針對主機群,目標一律為一個。

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

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

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

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

  • 針對每個機群,您可以為 Spot 執行個體指定下列其中一種配置策略:價格容量優化、容量優化、價格最低或跨所有集區多樣化。

  • 對於每個機群,您都可以為隨需執行個體套用價格最低的配置策略;您無法自訂隨需執行個體的配置策略。

  • 對於具有隨需 allocation strategy - lowest-price 的每個機群,您可以選擇套用容量保留選項。

  • 啟動叢集之前,先檢查子網路大小。當您佈建具有任務機群的叢集,但對應子網路中沒有足夠的可用 IP 地址時,叢集將進入暫停狀態,而不會因錯誤而終止叢集。若要避免此問題,建議您增加子網路中的 IP 地址數量。

執行個體機群選項

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

設定目標容量

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

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

重要

使用選擇執行個體類型時 AWS Management Console,針對每個執行個體類型顯示的 vCPU 數量是該執行個體類型的 YARN 核心數量,而不是該執行個體類型的 EC2 vCPUs 數量。如需有關每種執行個體類型的 vCPU 數量的詳細資訊,請參閱 Amazon EC2 執行個體類型

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

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

啟動選項

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

注意

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

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

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

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

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

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

主節點組態

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

執行個體機群的配置策略

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

隨需執行個體的配置策略

使用配置策略時,隨需執行個體會使用價格最低的策略。這會先啟動價格最低的執行個體。啟動隨需執行個體時,您可以在帳戶中使用開放目標容量保留。您可以針對主要、核心和任務節點使用開放容量保留。對於具有執行個體機群配置策略的隨需執行個體,您可能會遇到容量不足的情況。建議您指定更多執行個體類型,以實現多樣化,減少容量不足的情況。如需詳細資訊,請參閱 將容量保留與執行個體機群搭配使用

Spot 執行個體的配置策略

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

price-capacity-optimized (建議)

價格容量優化配置策略根據要啟動的執行個體數量從可用容量最高且價格最低的 Spot 執行個體集區中啟動 Spot 執行個體。因此,價格容量優化策略通常具有較高的機會取得 Spot 容量,並提供較低的中斷率。

capacity-optimized

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

diversified

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

lowest-price

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

配置策略許可

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

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

容量保留只能供與其屬性 (執行個體類型、平台和可用區域) 相符的執行個體使用。依預設,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": "*" } ] }

為叢集設定執行個體機群

注意

我們已重新設計 Amazon EMR 主控台,可讓您更輕鬆地使用。請參閱 Amazon EMR 控制台 以了解舊的和新的主控台體驗之間的差異。

New console
使用新主控台建立具有執行個體機群的叢集
  1. 登入 AWS Management Console,然後開啟 Amazon EMR 主控台,網址為 https://console.aws.amazon.com/emr

  2. 在左側導覽窗格中的 EC2 上的 EMR 下,選擇叢集,然後選擇建立叢集

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

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

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

    新增 EBS 磁碟區

    在 Amazon EMR 佈建之後,指定 EBS 磁碟區以附接至執行個體類型。

    編輯加權容量

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

    編輯 Spot 價格上限

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

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

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

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

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

Old console
使用舊主控台建立具有執行個體機群的叢集
  1. 導覽至新的 Amazon EMR 主控台,然後從側邊導覽選取切換至舊主控台。如需有關切換至舊主控台時預期情況的詳細資訊,請參閱使用舊主控台

  2. 選擇建立叢集

  3. 在主控台視窗頂端,選擇移至進階選項,輸入軟體組態選項,然後選擇下一步

  4. 叢集組成下,選擇執行個體機群。選取執行個體機群選項時,您應會在叢集節點和執行個體資料表中看到用於指定隨需執行個體和 Spot 執行個體的目標容量的選項。

  5. 對於 Network (網路),輸入值。如果您選擇網路的 VPC,請選擇單一 EC2 子網路或按 CTRL + 按一下以選擇多個 Amazon EC2 子網路。您選擇的子網路必須為相同類型 (公有或私有)。如果您只選擇一個,您的叢集會在該子網路中啟動。如果您選擇群組,會在叢集啟動時從群組中選取最符合的子網路。

    注意

    您的帳戶和區域可能會為您提供選項,讓您為網路選擇在 EC2-Classic 中啟動。如果您選擇該選項,請從 EC2 Availability Zones (EC2 可用區域) (而不是從 EC2 Subnets (EC2 子網路)) 選擇一或多個。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的 Amazon EC2 和亞馬遜 VPC

  6. 如果您要使用配置策略選項,請在配置策略下選取核取方塊以套用配置策略。如需詳細資訊,請參閱 執行個體機群的配置策略

  7. 對於每個節點類型,如果您要變更執行個體機群的預設名稱,請選擇鉛筆圖示,然後輸入好記的名稱。如果要移除任務執行個體機群,請選擇「任務」列右側的 X 圖示。

  8. 選擇將執行個體類型新增/移除至機群,並從主要和核心執行個體機群的清單中選擇最多 5 種執行個體類型;為任務執行個體機群新增最多 15 種執行個體類型。Amazon EMR 在啟動叢集時,可以選擇佈建這些執行個體類型的任何混合。

  9. 針對每種核心和任務執行個體類型,選擇您要定義該執行個體的加權容量 (每個執行個體計為 X 個單位) 的方式。每種機群執行個體類型的 YARN vCores 數量都會用作預設加權容量單位,但您可以將此值變更為對您的應用程式有意義的任何單位。

  10. 目標容量下,定義每個機群所需的隨需和 Spot 執行個體總數。EMR 可確保機群中的執行個體滿足隨需和 Spot 目標容量的請求單位。如果未為機群指定隨需或 Spot 單位,則不會為該機群佈建容量。

  11. 如果使用 Spot 的目標容量設定機群,您能以隨需定價的百分比的形式輸入 Spot 價格上限,或者您可以輸入以美元為單位的美元 ($) 金額。

  12. 若要在佈建執行個體類型時讓 EBS 磁碟區附接至其中時,選擇「EBS 儲存體」旁邊的鉛筆,然後輸入 EBS 組態選項。

  13. 如果您為 Spot 單位建立了即時計數,請根據下列指導方針設定進階 Spot 選項

    • 佈建逾時 – 使用這些設定,以控制 Amazon EMR 在無法從您指定的機群執行個體類型中佈建 Spot 執行個體時會執行的動作。您在幾分鐘內輸入逾時時間,然後選擇是否要 Terminate the cluster (終止叢集)Switch to provisioning On-Demand Instances (切換為佈建隨需執行個體)。如果您選擇切換到隨需執行個體,隨需執行個體的指派容量會計入 Spot 執行個體的目標容量,且 Amazon EMR 會在 Spot 執行個體目標容量履行前佈建隨需執行個體。

  14. 選擇下一步,修改其他叢集設定,然後選擇下一步

  15. 如果您選擇套用新的配置策略選項,請在安全選項設定中選取 EMR 角色EC2 執行個體設定檔,其中包含配置策略選項所需的許可。否則,叢集建立會失敗。

  16. 選擇 Create Cluster (建立叢集)。

AWS CLI

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

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

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

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

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

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

  • 您可以使用帶有 add-instance-fleet 指令的CustomAmiId 引數,將多個自訂 AMI 新增至任務執行個體叢集。請參閱範例:使用執行個體機群組態建立叢集

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

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

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

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

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

注意

如果您先前尚未建立預設 Amazon EMR 服務角色和 EC2 執行個體設定檔,請使用 aws emr create-default-roles 來建立這些設定檔,然後再使用 create-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 主要、含單一執行個體類型的 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 核心、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}'}
範例:隨需主要,含多個加權執行個體類型的混合核心和任務、核心 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}']
範例: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}]}}']
範例:多個自訂 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}']
範例:將任務節點新增至具有多種執行個體類型和多個自訂 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}']
範例:使用 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) 作為隨需的百分比,而任務和主執行個體叢集則使用最高 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" } ] } ]

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

使用 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

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

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