

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

# 設定 Amazon EMR on EKS 的垂直自動擴展
<a name="jobruns-vas-configure"></a>

當您透過 [StartJobRun](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html) API 提交 Amazon EMR Spark 作業時，可設定垂直自動擴展。在 Spark 驅動程式 Pod 中設定自動擴展相關組態參數，如 [使用垂直自動擴展功能提交 Spark 作業](jobruns-vas-gs.md#jobruns-vas-spark-submit) 中的範例所示。

Amazon EMR on EKS 垂直自動擴展 Operator 會偵聽具有自動擴展功能的驅動程式 Pod，然後透過驅動程式 Pod 中的設定進行與 Kubernetes Vertical Pod Autoscaler (VPA) 的整合。這有助於 Spark 執行程式 Pod 的資源追蹤和自動擴展。

以下各章節描述了為 Amazon EKS 叢集設定垂直自動擴展時可以使用的參數。

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

## 必要參數
<a name="jobruns-vas-parameters-req"></a>

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


| 金錀 | Description | 接受的值 | 預設值 | 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`  | 

1 `ConfigurationOverride` 在 `StartJobRun` API 中使用此參數作為 `SparkSubmitParameter` 或 。
+ **`dynamic.sizing`** - 可以使用 `dynamic.sizing` 標籤開啟和關閉垂直自動擴展功能。若要開啟垂直自動擴展，請在 Spark 驅動程式 Pod 中將 `dynamic.sizing` 設定為 `true`。如果省略此標籤或將其設定為除 `true` 以外的任何值，垂直自動擴展功能會關閉。
+ **`dynamic.sizing.signature`** - 在驅動程式 Pod 中設定含有 `dynamic.sizing.signature` 注釋的作業簽章。垂直自動擴展可跨 Amazon EMR Spark 作業的不同執行來彙總資源使用量資料，以衍生資源建議。您可以提供唯一識別符，以便將作業繫結在一起。

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

1 `ConfigurationOverride` 在 `StartJobRun` API 中使用此參數作為 `SparkSubmitParameter` 或 。

## 選用的參數
<a name="jobruns-vas-parameters-opt"></a>

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


| 金錀 | Description | 接受的值 | 預設值 | Type | Spark 參數1 | 
| --- | --- | --- | --- | --- | --- | 
|  `dynamic.sizing.mode`  |  垂直自動擴展模式  |  `Off`, `Initial`, `Auto`  |  `Off`  |  註釋  |  `spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.mode`  | 
|  `dynamic.sizing.scale.memory`  |  啟用記憶體擴展  |  *`true`, `false`*  |  `true`  |  註釋  |  `spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.scale.memory`  | 
|  `dynamic.sizing.scale.cpu`  |  開啟或關閉 CPU 擴展  |  *`true`, `false`*  |  `false`  |  註釋  |  `spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.scale.cpu`  | 
|  `dynamic.sizing.scale.memory.min`  |  記憶體擴展的下限  | 字串，[K8s 資源數量](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity)例如：1G |  未設定  |  註釋  | spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.scale.memory.min | 
|  `dynamic.sizing.scale.memory.max`  |  記憶體擴展的上限  | 字串，[K8s 資源數量](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity)例如：4G |  未設定  |  註釋  | spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.scale.memory.max | 
|  `dynamic.sizing.scale.cpu.min`  |  CPU 擴展的下限  | 字串，[K8s 資源數量](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity)例如：1 |  未設定  |  註釋  | spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.scale.cpu.min | 
|  `dynamic.sizing.scale.cpu.max`  |  CPU 擴展的上限  | 字串，[K8s 資源數量](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity)例如：2 |  未設定  |  註釋  | spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.scale.cpu.max | 

### 垂直自動擴展模式
<a name="jobruns-vas-parameters-opt-mode"></a>

`mode` 參數會映射至 VPA 支援的不同自動擴展模式。使用驅動程式 Pod 上的 `dynamic.sizing.mode` 註釋來設定模式。此參數支援下列值：
+ **關閉** – 試轉模式，您可以在該模式中監控建議，但不會執行自動擴展。這是垂直自動擴展的預設模式。在此模式中，相關聯的垂直 Pod 自動擴展器資源會計算建議，您可以透過 kubectl、Prometheus 和 Grafana 等工具監控建議。
+ **初始** - 在此模式中，如果根據作業的歷史執行 (例如週期性作業) 提供建議，則 VPA 會在作業開始時自動擴展資源。
+ **自動** - 在此模式中，VPA 會移出 Spark 執行程式 Pod，並在 Spark 驅動程式 Pod 重新啟動它們時，使用建議的資源設定來自動擴展它們。有時，VPA 會移出執行中的 Spark 執行程式 Pod，因此當它重試中斷的執行程式時，可能會導致額外的延遲。

### 資源擴展
<a name="jobruns-vas-parameters-opt-rs"></a>

當您設定垂直自動擴展時，可選擇是否擴展 CPU 和記憶體資源。將 `dynamic.sizing.scale.cpu` 和 `dynamic.sizing.scale.memory` 註釋設定為 `true` 或 `false`。根據預設，CPU 擴展設定為 `false`，記憶體擴展設定為 `true`。

### 資源最小值和最大值 (邊界)
<a name="jobruns-vas-parameters-opt-bounds"></a>

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