

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configuração da escalabilidade automática vertical para o Amazon EMR no EKS
<a name="jobruns-vas-configure"></a>

Você pode configurar o escalonamento automático vertical ao enviar trabalhos do Amazon EMR Spark por meio da API. [StartJobRun](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html) Defina os parâmetros de configuração relacionados à escalabilidade automática no pod do driver do Spark, conforme mostrado no exemplo em [Envio de um trabalho do Spark com a escalabilidade automática vertical](jobruns-vas-gs.md#jobruns-vas-spark-submit).

O operador de escalabilidade automática vertical do Amazon EMR no EKS recebe os pods de drivers que têm escalabilidade automática e, em seguida, configura a integração com o Vertical Pod Autoscaler (VPA) do Kubernetes usando as configurações no pod do driver. Isso facilita o rastreamento de recursos e a escalabilidade automática de pods de executores do Spark.

As seções a seguir descrevem os parâmetros que você pode usar ao configurar a escalabilidade automática vertical para o cluster do Amazon EKS.

**nota**  
Configure o parâmetro de alternância de recursos como um rótulo e configure os parâmetros restantes como anotações no pod do driver do Spark. Os parâmetros de escalabilidade automática pertencem ao domínio `emr-containers.amazonaws.com/` e têm o prefixo `dynamic.sizing`.

## Parâmetros necessários
<a name="jobruns-vas-parameters-req"></a>

Você deve incluir os dois seguintes parâmetros no driver de trabalho do Spark ao enviar o trabalho:


| Chave | Description | Valores aceitos | Valor padrão  | Tipo | Parâmetro do Spark1 | 
| --- | --- | --- | --- | --- | --- | 
|  `dynamic.sizing`  |  Alternância de recursos  |  `true`, `false`  |  não definido  |  rótulo  |  `spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing`  | 
|  `dynamic.sizing.signature`  |  Assinatura do trabalho  |  *string*  |  não definido  |  anotação  |  `spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.signature`  | 

1 Use esse parâmetro como um `SparkSubmitParameter` ou uma `ConfigurationOverride` na API `StartJobRun`.
+ **`dynamic.sizing`**: é possível ativar e desativar a escalabilidade automática vertical com o rótulo `dynamic.sizing`. Para ativar a escalabilidade automática vertical, defina `dynamic.sizing` como `true` no pod do driver do Spark. Se você omitir esse rótulo ou defini-lo com qualquer valor diferente de `true`, a escalabilidade automática vertical será desativada.
+ **`dynamic.sizing.signature`**: defina a assinatura do trabalho com a anotação `dynamic.sizing.signature` no pod do driver. A escalabilidade automática vertical agrega dados de uso de recursos em diferentes execuções de trabalhos do Spark no Amazon EMR para derivar recomendações de recursos. Você fornece o identificador exclusivo para unir os trabalhos.

  
**nota**  
Se o seu trabalho se repetir em um intervalo fixo, como diariamente ou semanalmente, a assinatura do trabalho deverá permanecer a mesma para cada nova instância dele. Isso garante que a escalabilidade automática vertical possa computar e agregar recomendações em diferentes execuções do trabalho.

1 Use esse parâmetro como um `SparkSubmitParameter` ou uma `ConfigurationOverride` na API `StartJobRun`.

## Parâmetros opcionais
<a name="jobruns-vas-parameters-opt"></a>

A escalabilidade automática vertical também oferece suporte aos parâmetros opcionais apresentados a seguir. Defina-os como anotações no pod do driver.


| Chave | Description | Valores aceitos | Valor padrão  | Tipo | Parâmetro do Spark1 | 
| --- | --- | --- | --- | --- | --- | 
|  `dynamic.sizing.mode`  |  Modo da escalabilidade automática vertical  |  `Off`, `Initial`, `Auto`  |  `Off`  |  anotação  |  `spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.mode`  | 
|  `dynamic.sizing.scale.memory`  |  Habilitação da escalabilidade de memória  |  *`true`, `false`*  |  `true`  |  anotação  |  `spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.scale.memory`  | 
|  `dynamic.sizing.scale.cpu`  |  Ativação ou desativação da escalabilidade de CPU  |  *`true`, `false`*  |  `false`  |  anotação  |  `spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.scale.cpu`  | 
|  `dynamic.sizing.scale.memory.min`  |  Limite mínimo para a escalabilidade de memória  | string, [K8s resource.Quantity](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity), por exemplo: 1G |  não definido  |  anotação  | spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.scale.memory.min | 
|  `dynamic.sizing.scale.memory.max`  |  Limite máximo para a escalabilidade de memória  | string, [K8s resource.Quantity](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity), por exemplo: 4G |  não definido  |  anotação  | spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.scale.memory.max | 
|  `dynamic.sizing.scale.cpu.min`  |  Limite mínimo para a escalabilidade de CPU  | string, [K8s resource.Quantity](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity), por exemplo: 1 |  não definido  |  anotação  | spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.scale.cpu.min | 
|  `dynamic.sizing.scale.cpu.max`  |  Limite máximo para a escalabilidade de CPU  | string, [K8s resource.Quantity](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity), por exemplo: 2 |  não definido  |  anotação  | spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.scale.cpu.max | 

### Modos da escalabilidade automática vertical
<a name="jobruns-vas-parameters-opt-mode"></a>

O parâmetro `mode` é mapeado para os diferentes modos de escalabilidade automática compatíveis com o VPA. Use a anotação `dynamic.sizing.mode` no pod do driver para definir o modo. Os seguintes valores têm suporte para este parâmetro:
+ **Desativado**: um modo de simulação no qual é possível monitorar recomendações, mas a escalabilidade automática não é executada. Este é o modo padrão para a escalabilidade automática vertical. Nesse modo, o recurso de escalabilidade automática vertical do pod associado computa recomendações e você pode monitorá-las usando ferramentas como o kubectl, o Prometheus e o Grafana.
+ **Inicial**: neste modo, o VPA escala automaticamente os recursos quando o trabalho é iniciado, se houver recomendações disponíveis com base no histórico de execuções do trabalho, como no caso de um trabalho recorrente.
+ **Automático**: neste modo, o VPA realiza a remoção de pods de executores do Spark e os escala automaticamente com as configurações de recursos recomendadas quando o pod do driver do Spark os reinicia. Às vezes, o VPA realiza a remoção de pods de executores do Spark em execução, portanto, isso pode resultar em latência adicional ao tentar novamente o executor interrompido.

### Escalabilidade de recursos
<a name="jobruns-vas-parameters-opt-rs"></a>

Ao configurar a escalabilidade automática vertical, você pode escolher se deseja escalar os recursos de CPU e de memória. Defina as anotações `dynamic.sizing.scale.cpu` e `dynamic.sizing.scale.memory` como `true` ou `false`. Por padrão, a escalabilidade de CPU é definida como `false` e a escalabilidade de memória é definida como `true`.

### Mínimos e máximos de recursos (limites)
<a name="jobruns-vas-parameters-opt-bounds"></a>

Como opção, também é possível definir limites para os recursos de CPU e de memória. Escolha valores mínimo e máximo para esses recursos com as anotações `dynamic.sizing.[memory/cpu].[min/max]` ao ativar a escalabilidade automática. Por padrão, os recursos não têm limitações. Defina as anotações como valores de string que representam uma quantidade de recursos do Kubernetes. Por exemplo, defina `dynamic.sizing.memory.max` como `4G` para representar 4 GB.