Configuração da escalabilidade automática vertical para o Amazon EMR no EKS - Amazon EMR

Configuração da escalabilidade automática vertical para o Amazon EMR no EKS

Você pode configurar a escalabilidade automática vertical ao enviar trabalhos do Spark no Amazon EMR usando a API StartJobRun. 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.

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

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

Chave Descrição 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 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 Descrição 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.label.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.label.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.label.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, por exemplo: 1G

não definido

anotação

spark.kubernetes.driver.label.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, por exemplo: 4G

não definido

anotação

spark.kubernetes.driver.label.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, por exemplo: 1

não definido

anotação

spark.kubernetes.driver.label.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, por exemplo: 2

não definido

anotação

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

Modos da escalabilidade automática vertical

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

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)

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.