設定統一執行個體群組 - Amazon EMR

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

設定統一執行個體群組

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

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

若要在叢集建立後新增不同的執行個體類型,您可以新增額外的任務執行個體群組。您可以選擇適用於每個執行個體群組的不同執行個體類型與購買選項。如需詳細資訊,請參閱 使用叢集擴展

在啟動執行個體時,隨需執行個體的容量保留偏好設定會預設為 open,可讓它在任何具有相符屬性 (執行個體類型、平台、可用區域) 的開放容量保留中執行。如需有關隨需容量保留的詳細資訊,請參閱 將容量保留與執行個體機群搭配使用

這個區段涵蓋建立含統一執行個體群組的叢集。如需透過手動新增或移除執行個體或透過自動擴展來修改現有執行個體群組的更多資訊,請參閱 管理叢集

使用主控台設定統一執行個體群組

注意

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

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

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

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

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

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

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

    新增 EBS 磁碟區

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

    編輯 Spot 價格上限

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

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

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

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

Old console

下列程序涵蓋當您建立叢集時的 Advanced options (進階選項)。使用 Quick options (快速選項) 也會建立含執行個體群組組態的叢集。

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

  2. 選擇建立叢集

  3. 選擇 Go to advanced options (前往進階選項),輸入 Software Configuration (軟體組態) 選項,接著選擇 Next (下一步)

  4. Hardware Configuration (硬體組態) 畫面中,將 Uniform instance groups (統一執行個體群組) 保持為選取。

  5. 選擇 Network (網路),然後為您的叢集選擇 EC2 Subnet (EC2 子網路)。您選擇的子網路會關聯至可用性群組,這會與每個子網路一同列出。如需詳細資訊,請參閱 設定聯網

    注意

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

  6. 在每個 Node type (節點類型) 資料列中:

    • 節點類型下,如果您要變更執行個體群組的預設名稱,請選擇鉛筆圖示,然後輸入好記的名稱。如果想要移除任務執行個體群組,請選擇 X 圖示。選擇 Add task instance group (新增任務執行個體群組) 新增額外的 Task (任務) 執行個體群組。

    • 執行個體類型下,選擇鉛筆圖示,然後選擇您想要用於該節點類型的執行個體類型。

      重要

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

    • 執行個體類型下,針對組態選擇鉛筆圖示,然後編輯每個執行個體群組的應用程式組態。

    • Instance count (執行個體計數) 下,為每個節點類型輸入要使用的執行個體數量。

    • 購買選項下,選擇隨需Spot。如果您選擇 Spot (Spot),則需選擇 Spot 執行個體的最高價格選項。依預設,使用隨需作為最高價格會被選取。您可以選擇 Set max $/hr (設定最高 USD/hr),然後輸入您的最高價。您選擇的 EC2 Subnet (EC2 子網路) 可用區域低於 Maximum Spot price (最大 Spot 價格)

      提示

      Spot 的資訊工具提示上暫停,以查看目前區域中可用區域的目前 Spot 價格。最低 Spot 價格會以綠色顯示。建議您使用此資訊來變更 EC2 Subnet (EC2 子網路) 選項。

    • Auto Scaling for Core and Task node types (核心和任務節點類型的 Auto Scaling),選擇鉛筆圖示,然後設定自動擴展選項。如需詳細資訊,請參閱 針對執行個體群組,搭配使用自動擴展與自訂政策

  7. 視需要選擇 Add task instance group (新增任務執行個體群組),並依前一步驟所述進行設定。

  8. 請選擇 Next (下一步),修改其他叢集設定,接著啟動叢集。

使用建立具有統一執行個體群組的 AWS CLI 叢集

若要使用 AWS CLI指定叢集的執行個體群組組態,請使用 create-cluster 命令和 --instance-groups 參數。Amazon EMR 會假設使用隨需執行個體選項,除非您為執行個體群組指定 BidPrice 引數。如需 create-cluster 命令的範例,該命令會啟動含隨需執行個體的統一執行個體群組與各種叢集選項,請在命令列中鍵入 aws emr create-cluster help 或參閱《AWS CLI 命令參考》中的 create-cluster

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

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

注意

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

aws emr create-cluster --name "MySpotCluster" \ --release-label emr-7.1.0 \ --use-default-roles \ --ec2-attributes KeyName=myKey \ --instance-groups \ InstanceGroupType=MASTER,InstanceType=m5.xlarge,InstanceCount=1,BidPrice=0.25 \ InstanceGroupType=CORE,InstanceType=m5.xlarge,InstanceCount=2,BidPrice=0.03 \ InstanceGroupType=TASK,InstanceType=m5.xlarge,InstanceCount=4,BidPrice=0.03 \ InstanceGroupType=TASK,InstanceType=m5.xlarge,InstanceCount=2,BidPrice=0.04

使用 CLI,您可以建立統一執行個體群組叢集,以為執行個體群組中的每個執行個體類型指定唯一的自訂 AMI。這可讓您在相同執行個體群組中使用不同的執行個體架構。每個執行個體類型都必須使用具有相符架構的自訂 AMI。例如,您可以使用 x86_64 架構自訂 AMI 來設定 m5.xlarge 執行個體類型,使用對應 AWS AARCH64 (ARM) 架構自訂 AMI 設定 m6g.xlarge 執行個體類型。

下列範例顯示了使用兩種執行個體類型建立的統一執行個體群組叢集,每個類型都有自己的自訂 AMI。請注意,自訂 AMI 僅在執行個體類型層級指定,而非在叢集層級指定。這是為了避免執行個體類型 AMI 與叢集層級 AMI 之間發生衝突,從而導致叢集啟動失敗。

aws emr create-cluster --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \ --instance-groups \ InstanceGroupType=MASTER,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-123456 \ InstanceGroupType=CORE,InstanceType=m6g.xlarge,InstanceCount=1,CustomAmiId=ami-234567

您可以將多個自訂 AMI 新增至您新增至執行中叢集的執行個體群組。CustomAmiId 引數可以與 add-instance-groups 命令搭配使用,如下列範例所示。

aws emr add-instance-groups --cluster-id j-123456 \ --instance-groups \ InstanceGroupType=Task,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-123456

使用 Java SDK 來建立執行個體群組

您會將 InstanceGroupConfig 物件個體化,該物件會指定叢集的執行個體群組組態。若要使用 Spot 執行個體,您會針對 withBidPrice 物件設定 withMarketInstanceGroupConfig 屬性。下列程式碼顯示如何定義執行 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");