將容量保留與執行個體機群搭配使用 - Amazon EMR

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

將容量保留與執行個體機群搭配使用

若要啟動具有容量保留選項的隨需執行個體機群,請附接使用容量保留選項所需的其他服務角色許可。由於容量保留選項必須與隨需配置策略一起使用,因此您也必須在服務角色和受管政策中包含配置策略所需的許可。如需詳細資訊,請參閱 配置策略許可

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

盡量使用開放容量保留

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

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

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

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

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

按需策略 lowest-price
要求的容量 100
執行個體類型 c5.xlarge m5.xlarge r5.xlarge
可用的開放容量保留 150 100 100
按需價格 $ $$ $$$
佈建的執行個體 100 - -
使用的開放容量保留 100 - -
可用的開放容量保留 50 100 100

啟動執行個體機群後,您可以執行 describe-capacity-reservations 以查看未使用的容量保留的剩餘數量。

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

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

按需策略 lowest-price
要求的容量 100
執行個體類型 c5.xlarge m5.xlarge r5.xlarge

可用的開放容量保留

- - 100
按需價格 $ $$ $$$
佈建的執行個體 100 - -
使用的開放容量保留 - - -
可用的開放容量保留 - - 100

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

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

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

您也可以使用 Amazon 透過開放容量保留EMRCLI來建立執行個體叢集型叢集。

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。

先使用開放容量保留

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

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

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

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

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

按需策略 lowest-price
要求的容量 100
使用策略 use-capacity-reservations-first
執行個體類型 c5.xlarge m5.xlarge r5.xlarge
可用的開放容量保留 - - 150
按需價格 $ $$ $$$
佈建的執行個體 - - 100
使用的開放容量保留 - - 100
可用的開放容量保留 - - 50

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

在這種情況下,Amazon EMR 回到使用最低價格策略啟動核心節點,並盡力使用容量保留。

按需策略 lowest-price
要求的容量 100
使用策略 use-capacity-reservations-first
執行個體類型 c5.xlarge m5.xlarge r5.xlarge
可用的開放容量保留 10 50 50
按需價格 $ $$ $$$
佈建的執行個體 100 - -
使用的開放容量保留 10 - -
可用的開放容量保留 - 50 50

啟動執行個體機群後,您可以執行 describe-capacity-reservations 以查看未使用的容量保留的剩餘數量。

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

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

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

您也可以先使用 Amazon 使用容量保留EMRCLI來建立以執行個體叢集為基礎的叢集。

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。

先使用目標容量保留

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

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

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

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

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

按需策略 lowest-price
使用策略 use-capacity-reservations-first
要求的容量 100
執行個體類型 c5.xlarge m5.xlarge r5.xlarge
可用的目標容量保留 - - 150
按需價格 $ $$ $$$
佈建的執行個體 - - 100
使用的目標容量保留 - - 100
可用的目標容量保留 - - 50
範例 2:啟動請求中具有可用目標容量保留的執行個體集區沒有足夠的容量供核心節點使用
按需策略 lowest-price
要求的容量 100
使用策略 use-capacity-reservations-first
執行個體類型 c5.xlarge m5.xlarge r5.xlarge
可用的目標容量保留 10 50 50
按需價格 $ $$ $$$
佈建的執行個體 100 - -
使用的目標容量保留 10 - -
可用的目標容量保留 - 50 50

啟動執行個體機群後,您可以執行 describe-capacity-reservations 以查看未使用的容量保留的剩餘數量。

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

當您使用 RunJobFlow 動作建立執行個體機群型叢集時,將隨需配置策略設定為 lowest-price,將 CapacityReservationOptionsUsageStrategy 設定為 use-capacity-reservations-first,將 CapacityReservationOptionsCapacityReservationResourceGroupArn 設定為 <your resource group ARN>。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的使用容量保留

"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 使用目標容量保留EMRCLI來建立執行個體叢集型叢集。

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。

避免使用可用的開放容量保留

如果您想要避免在啟動 Amazon EMR 叢集時意外使用任何開放容量保留,請將隨需配置策略設CapacityReservationPreferenceCapacityReservationOptionslowest-price和 for 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。

使用容量保留的案例

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

案例 1:使用容量保留輪換長時間執行的叢集

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

使用可用容量保留的叢集輪換
案例 2:使用容量保留佈建連續的短期叢集

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

使用可用容量保留的短期叢集佈建