在 EMR上設定 Amazon 的垂直自動擴展 EKS - Amazon EMR

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

在 EMR上設定 Amazon 的垂直自動擴展 EKS

當您透過 提交 Amazon EMR Spark StartJobRun 任務時,可以設定垂直自動擴展API。在 Spark 驅動程式 Pod 中設定自動擴展相關組態參數,如 使用垂直自動擴展功能提交 Spark 作業 中的範例所示。

Amazon EMR on EKS vertical Autoscaling 運算子會接聽具有自動擴展的驅動程式 Pod,然後設定與 Kubernetes Vertical Pod Autoscaler (VPA) 的整合,並在驅動程式 Pod 上設定。這有助於 Spark 執行程式 Pod 的資源追蹤和自動擴展。

下列各節說明您在為 Amazon EKS叢集設定垂直自動擴展時可以使用的參數。

注意

將功能切換參數設定為標籤,並將其餘參數設定為 Spark 驅動程式 Pod 中的註釋。自動擴展參數屬於 emr-containers.amazonaws.com/ 域,並具有 dynamic.sizing 字首。

必要參數

提交作業時,必須在 Spark 作業驅動程式中包含下列兩個參數:

金錀 描述 接受的值 預設值 Type Spark 參數1

dynamic.sizing

功能切換

true, false

未設定

label

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing

dynamic.sizing.signature

作業簽章

string

未設定

註釋

spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.signature

1ConfigurationOverride中使用此參數作為 SparkSubmitParameterStartJobRun API。

  • dynamic.sizing - 可以使用 dynamic.sizing 標籤開啟和關閉垂直自動擴展功能。若要開啟垂直自動擴展,請在 Spark 驅動程式 Pod 中將 dynamic.sizing 設定為 true。如果省略此標籤或將其設定為除 true 以外的任何值,垂直自動擴展功能會關閉。

  • dynamic.sizing.signature - 在驅動程式 Pod 中設定含有 dynamic.sizing.signature 注釋的作業簽章。垂直自動擴展會在 Amazon EMR Spark 任務的不同執行中彙總資源用量資料,以取得資源建議。您可以提供唯一識別符,以便將作業繫結在一起。

    注意

    如果作業以固定間隔 (例如每日或每週) 重複出現,則作業簽章對於作業的每個新執行個體都應保持不變。這可確保垂直自動擴展功能可以計算和彙總作業的不同執行中的建議。

1ConfigurationOverride中使用此參數作為 SparkSubmitParameterStartJobRun API。

選用的參數

垂直自動擴展也支援下列選用參數。將它們設定為驅動程式 Pod 中的注釋。

金錀 描述 接受的值 預設值 Type Spark 參數1

dynamic.sizing.mode

垂直自動擴展模式

Off, Initial, Auto

Off

註釋

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.mode

dynamic.sizing.scale.memory

啟用記憶體擴展

true, false

true

註釋

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.memory

dynamic.sizing.scale.cpu

開啟或關閉CPU擴展

true, false

false

註釋

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.cpu

dynamic.sizing.scale.memory.min

記憶體擴展的下限

字串,K8s 資源數量例如:1G

未設定

註釋

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.memory.min

dynamic.sizing.scale.memory.max

記憶體擴展的上限

字串,K8s 資源數量例如:4G

未設定

註釋

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.memory.max

dynamic.sizing.scale.cpu.min

CPU 擴展的下限

字串,K8s 資源數量例如:1

未設定

註釋

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.cpu.min

dynamic.sizing.scale.cpu.max

CPU 擴展的最大限制

字串,K8s 資源數量例如:2

未設定

註釋

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.cpu.max

垂直自動擴展模式

mode 參數會映射到 VPA支援的不同自動擴展模式。使用驅動程式 Pod 上的 dynamic.sizing.mode 註釋來設定模式。此參數支援下列值:

  • 關閉 – 試轉模式,您可以在該模式中監控建議,但不會執行自動擴展。這是垂直自動擴展的預設模式。在此模式中,相關聯的垂直 Pod 自動擴展器資源會計算建議,您可以透過 kubectl、Prometheus 和 Grafana 等工具監控建議。

  • 初始 – 在此模式下,如果根據任務的歷史執行提供建議,例如在重複執行任務的情況下,工作開始時, VPA 會自動調整資源規模。

  • 自動 – 在此模式下, VPA 會逸出 Spark 執行器 Pod,並在 Spark 驅動程式 Pod 重新啟動時,使用建議的資源設定自動調整規模。有時, VPA 會逃避執行 Spark 執行器 Pod,因此當重試中斷的執行器時,可能會導致額外的延遲。

資源擴展

設定垂直自動擴展時,您可以選擇是否要擴展CPU和記憶體資源。將 dynamic.sizing.scale.cpudynamic.sizing.scale.memory 註釋設定為 truefalse。根據預設,CPU擴展會設為 false,記憶體擴展會設為 true

資源最小值和最大值 (邊界)

您也可以選擇性地設定 CPU和 記憶體資源的界限。啟用自動擴展時,請為這些具有 dynamic.sizing.[memory/cpu].[min/max] 註釋的資源選擇最小值和最大值。根據預設,資源沒有限制。將註釋設定為代表 Kubernetes 資源數量的字串值。例如,將 dynamic.sizing.memory.max 設定為 4G,表示 4 GB。