了解節點配置策略和案例 - Amazon EMR

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

了解節點配置策略和案例

本章節提供節點分配策略和常見擴展案例的概觀,可以與 Amazon EMR 受管擴展功能搭配使用。

節點配置策略

Amazon EMR 受管擴展功能可根據下列縱向擴展和縮減規模策略來分配核心節點和任務節點:

縱向擴展策略

  • Amazon EMR 受管擴展功能首先將容量新增到核心節點,然後新增到任務節點,直到達到允許的最大容量或達到所需的縱向擴展目標容量為止。

  • 當 Amazon EMR 在與目前執行個體群組的縱向擴展中遇到延遲時,使用受管擴展功能的叢集可自動切換到不同的任務執行個體群組。

  • 如果已設定 MaximumCoreCapacityUnits 參數,Amazon EMR 會擴展核心節點,直到核心單元達到允許的上限為止。所有剩餘容量都會新增至任務節點。

  • 如果已設定 MaximumOnDemandCapacityUnits 參數,Amazon EMR 會使用隨需執行個體來擴展叢集,直到隨需單位達到允許的上限為止。使用 Spot 執行個體新增所有剩餘容量。

  • 如果同時設定了 MaximumCoreCapacityUnitsMaximumOnDemandCapacityUnits 參數,Amazon EMR 會在擴展期間考慮這兩個限制。

    例如,如果 MaximumCoreCapacityUnits 小於 MaximumOnDemandCapacityUnits,Amazon EMR 會先擴展核心節點,直到達到核心容量限制為止。對於剩餘容量,Amazon EMR 首先使用隨需執行個體來擴展任務節點,直到達到隨需限制為止,然後將 Spot 執行個體用於任務節點。

縮減規模策略

  • Amazon EMR 5.34.0 及更高版本以及 Amazon EMR 6.4.0 及更高版本支援受管擴展功能,它可感知 Spark 隨機資料 (Spark 會在分割區之間重新分配以執行特定操作的資料)。如需有關隨機排序操作的詳細資訊,請參閱《Spark 程式設計指南》。受管擴展功能僅縮減使用率不足且不包含使用中隨機資料的執行個體。這種智慧型擴展可防止意外的隨機資料遺失,避免重新嘗試作業和重新計算中繼資料。

  • Amazon EMR 受管擴展功能會先移除任務節點,然後移除核心節點,直到達到所需的縮減規模目標容量為止。叢集擴展永遠不會低於受管擴展政策中的最小限制。

  • 在每個節點類型 (核心節點或任務節點) 中,Amazon EMR 受管擴展功能會先移除 Spot 執行個體,然後移除隨需執行個體。

  • 對於使用 Amazon EMR 5.x 版本 5.34.0 及更高版本和 6.x 版本 6.4.0 及更高版本啟動的叢集,Amazon EMR 受管擴展功能不會縮減在其中執行 ApplicationMaster for Apache Spark 的節點。這樣可以最大限度地減少作業失敗和重試,有助於提高作業績效並降低成本。若要確認叢集中的哪些節點正在執行 ApplicationMaster,請造訪 Spark 歷史記錄伺服器,並在 Spark 應用程式 ID 的執行程式索引標籤下篩選驅動程式。

如果叢集沒有任何負載,則 Amazon EMR 會取消先前評估中新增的執行個體,並執行縮減規模操作。如果叢集負載過重,則 Amazon EMR 會取消移除執行個體並執行縱向擴展操作。

節點分配考量

建議您針對核心節點使用隨需購買選項,避免在 Spot 回收時遺失 HDFS 資料。可以針對作業節點使用 Spot 購買選項來降低成本,並在將更多 Spot 執行個體新增至作業節點時獲得更快的作業執行速度。

節點配置案例

透過設定不同組合中的上限、下限、隨需限制以及核心節點參數上限,根據您的需求建立各種擴展案例。

案例 1:僅擴展核心節點

若僅擴展核心節點,受管擴展參數必須符合下列要求:

  • 隨需限制等於最大邊界。

  • 最大核心節點等於最大邊界。

如果未指定隨需限制和最大核心節點參數,則兩個參數都會預設為最大邊界。

下列範例僅示範擴展核心節點的案例。

叢集初始狀態 擴展參數 擴展行為

執行個體群組

核心:1 個隨需

任務:1 個隨需與 1 個 Spot

UnitType:執行個體

MinimumCapacityUnits:1

MaximumCapacityUnits: 20

MaximumOnDemandCapacityUnits: 20

MaximumCoreCapacityUnits: 20

使用隨需類型,在核心節點上的 1 到 20 個執行個體或執行個體機群單元之間進行擴展。任務節點上沒有擴展。

執行個體機群

核心:1 個隨需

任務:1 個隨需與 1 個 Spot

UnitType: InstanceFleetUnits

MinimumCapacityUnits:1

MaximumCapacityUnits: 20

MaximumOnDemandCapacityUnits: 20

MaximumCoreCapacityUnits: 20

案例 2:僅擴展任務節點

若僅擴展任務節點,受管擴展參數必須符合下列要求:

  • 最大核心節點必須等於最小邊界。

下列範例僅示範擴展任務節點的案例。

叢集初始狀態 擴展參數 擴展行為

執行個體群組

核心:2 隨需

任務:1 Spot

UnitType:執行個體

MinimumCapacityUnits: 2

MaximumCapacityUnits: 20

MaximumCoreCapacityUnits: 2

將核心節點穩定保持為 2,並且只在 0 到 18 個執行個體或執行個體機群單元之間擴展任務節點。最小與最大界限之間的容量只會新增至任務節點。

執行個體機群

核心:2 隨需

任務:1 Spot

UnitType: InstanceFleetUnits

MinimumCapacityUnits: 2

MaximumCapacityUnits: 20

MaximumCoreCapacityUnits: 2

案例 3:僅叢集中的隨需執行個體

若要僅擁有隨需執行個體,叢集和受管擴展參數必須符合下列要求:

  • 隨需限制等於最大邊界。

    如果未指定隨需限制,參數值會預設為最大邊界。預設值表示 Amazon EMR 僅擴展隨需執行個體。

如果最大核心節點小於最大界限,則可以使用最大核心節點參數來分割核心節點和任務節點之間的容量配置。

若要在由執行個體群組構成的叢集中啟用此案例,叢集中的所有節點群組都必須在初始設定期間使用隨需市場類型。

下列範例示範在整個叢集中擁有隨需執行個體的案例。

叢集初始狀態 擴展參數 擴展行為

執行個體群組

核心:1 個隨需

任務:1 個隨需

UnitType:執行個體

MinimumCapacityUnits:1

MaximumCapacityUnits: 20

MaximumOnDemandCapacityUnits: 20

MaximumCoreCapacityUnits: 12

使用隨需類型,在核心節點上的 1 到 12 個執行個體或執行個體機群單元之間進行擴展。使用任務節點上的隨需類型來擴展剩餘容量。不使用 Spot 執行個體進行擴展。

執行個體機群

核心:1 個隨需

任務:1 個隨需

UnitType: InstanceFleetUnits

MinimumCapacityUnits:1

MaximumCapacityUnits: 20

MaximumOnDemandCapacityUnits: 20

MaximumCoreCapacityUnits: 12

案例 4:叢集中只有 Spot 執行個體

若要僅擁有 Spot 執行個體,受管擴展參數必須符合下列要求:

  • 隨需限制設定為 0。

如果最大核心節點小於最大界限,則可以使用最大核心節點參數來分割核心節點和任務節點之間的容量配置。

若要在由執行個體群組構成的叢集中啟用此案例,核心執行個體群組必須在初始組態設定期間使用 Spot 購買選項。如果任務執行個體群組中沒有 Spot 執行個體,Amazon EMR 受管擴展功能可在需要時使用 Spot 執行個體建立任務群組。

下列範例示範在整個叢集中擁有 Spot 執行個體的案例。

叢集初始狀態 擴展參數 擴展行為

執行個體群組

核心:1 個 Spot

任務:1 Spot

UnitType:執行個體

MinimumCapacityUnits:1

MaximumCapacityUnits: 20

MaximumOnDemandCapacityUnits:0

使用 Spot 在核心節點上的 1 到 20 個執行個體或執行個體機群單元之間進行擴展。不使用隨需類型進行擴展。

執行個體機群

核心:1 個 Spot

任務:1 Spot

UnitType: InstanceFleetUnits

MinimumCapacityUnits:1

MaximumCapacityUnits: 20

MaximumOnDemandCapacityUnits:0

案例 5:擴展核心節點上的隨需執行個體和任務節點上的 Spot 執行個體

若要擴展核心節點上的隨需執行個體和任務節點上的 Spot 執行個體,受管擴展參數必須符合下列要求:

  • 隨需限制必須等於最大核心節點。

  • 隨需限制和最大核心節點都必須小於最大界限。

若要在由執行個體群組構成的叢集中啟用此案例,核心節點群組必須使用隨需購買選項。

下列範例示範擴展核心節點上的隨需執行個體和任務節點上的 Spot 執行個體的案例。

叢集初始狀態 擴展參數 擴展行為

執行個體群組

核心:1 個隨需

任務:1 個隨需與 1 個 Spot

UnitType:執行個體

MinimumCapacityUnits:1

MaximumCapacityUnits: 20

MaximumOnDemandCapacityUnits: 7

MaximumCoreCapacityUnits: 7

由於任務節點上已有 1 個隨需單元,而隨需的最大限制為 7,因此在核心節點上最多可擴展 6 個隨需單元。然後在任務節點上縱向擴展到 13 個 Spot 單位。

執行個體機群

核心:1 個隨需

任務:1 個隨需與 1 個 Spot

UnitType: InstanceFleetUnits

MinimumCapacityUnits:1

MaximumCapacityUnits: 20

MaximumOnDemandCapacityUnits: 7

MaximumCoreCapacityUnits: 7