O auto scaling adiciona ou remove nós automaticamente em um cluster EMR conforme as flutuações da carga de trabalho. Esse recurso ajuda você a atender às demandas variáveis e, ao mesmo tempo, reduz custos.
Pré-requisitos
Crie um cluster DataLake, Dataflow, OLAP, DataServing ou personalizado. Para mais informações, consulte Create a cluster.
O cluster deve conter um grupo de nós de tarefa que utilize instâncias de pagamento conforme o uso ou preemptíveis. Para mais informações, consulte Add a node group.
Etapa 1: Selecione um modo de acionamento
Selecione o modo de acionamento adequado ao padrão da sua carga de trabalho.
|
Caso de uso |
Modo de acionamento |
|
Cargas de trabalho com padrões previsíveis baseados em horário ou que exigem uma quantidade estável de nós em períodos específicos. |
Utilize time-based scaling para atender rapidamente às demandas do seu negócio. |
|
Cargas de trabalho com flutuações sem padrão horário definido, variando conforme o volume de negócios. |
Adote load-based scaling. Esse modo monitora métricas para detectar variações na carga e aciona o dimensionamento segundo suas regras, garantindo recursos suficientes para seus jobs. |
|
Cargas de trabalho que apresentam tanto padrões horários previsíveis quanto flutuações baseadas em demanda. |
Combine time-based scaling e load-based scaling para definir as regras de dimensionamento. |
Etapa 2: Configure regras de auto scaling
Quando várias regras de auto scaling atingem suas condições simultaneamente, o sistema as executa seguindo esta ordem de prioridade:
Regras de scale-out têm precedência sobre regras de scale-in.
Regras baseadas em tempo e em carga são executadas na ordem em que forem acionadas.
No dimensionamento baseado em carga, a prioridade das regras segue o timestamp da métrica acionada.
Para regras baseadas em carga que compartilham a mesma métrica de acionamento, a execução respeita a ordem de criação.
Dimensionamento baseado em tempo
Configure uma regra de scale-out baseada em tempo para execução recorrente ou única, alinhada aos momentos de aumento da sua carga de trabalho. Também é possível configurar uma regra de scale-in para reduzir a quantidade de nós nos horários de menor movimento. Em regras recorrentes, defina o parâmetro Rule Expiration Time para estabelecer a data de expiração. Após esse prazo, nenhuma atividade de dimensionamento será acionada.
Por exemplo, se sua carga de trabalho aumenta às 22:00 e diminui às 04:00 todos os dias, configure uma regra recorrente de scale-out para as 22:00 e uma regra recorrente de scale-in para as 04:00.
Para mais detalhes sobre os parâmetros e as métricas de carga do cluster, consulte Create custom auto scaling policies.
Dimensionamento baseado em carga
O EMR recomenda métricas comuns para dimensionamento por padrão. Configure limiares específicos com base nas tendências das métricas do seu cluster. Após definir os valores, clique em OK e, em seguida, clique em Save and Apply. As regras serão acionadas automaticamente em resposta às mudanças na carga de trabalho.
Siga as etapas abaixo para configurar as regras de dimensionamento do seu cluster.
-
Escolha as métricas apropriadas.
Na aba Monitoring, acesse a página Metric Monitoring. Na lista suspensa Dashboard, selecione YARN-HOME. Analise como as métricas variaram junto com a carga de trabalho ao longo do tempo para identificar as mais adequadas.

Os valores das métricas devem ter relação inversa com as alterações de capacidade. Ou seja, após uma atividade de dimensionamento, espera-se que os valores diminuam à medida que a quantidade de instâncias muda.
Por exemplo, você pode configurar uma regra de scale-out que adicione um nó caso o valor médio de yarn_resourcemanager_queue_AppsPending seja maior ou igual a 1 em uma ocorrência consecutiva. Após essa expansão, a quantidade de aplicações pendentes na fila deve cair.
A tabela a seguir apresenta as métricas recomendadas.
Métrica
service
Descrição
yarn_resourcemanager_queue_AvailableMBPercentage
YARN
Percentual de recursos de memória disponíveis na fila raiz.
yarn_resourcemanager_queue_AvailableVCores
YARN
Quantidade de vCPUs disponíveis para alocação na fila raiz.
yarn_resourcemanager_queue_AvailableMB
YARN
Volume de memória disponível para alocação na fila raiz. Unidade: MB.
yarn_resourcemanager_queue_AppsPending
YARN
Número de aplicações pendentes na fila raiz.
yarn_resourcemanager_queue_PendingContainers
YARN
Total de containers aguardando alocação na fila raiz.
yarn_resourcemanager_queue_AvailableVCoresPercentage
YARN
Percentual de recursos de vCPU disponíveis na fila raiz.
-
Defina uma regra de dimensionamento adequada.
Como ponto de partida, utilize métricas relacionadas a pendências para regras de scale-out e métricas de disponibilidade para regras de scale-in.
Dentro de uma única regra, combine múltiplas condições baseadas em métricas com lógica AND/OR para obter controle mais granular sobre os acionamentos.
-
Para evitar desperdício de recursos devido a dimensionamentos frequentes, estabeleça um tempo de resfriamento (cooldown) nas regras de scale-in. Durante esse período, o sistema não inicia novas atividades de dimensionamento, mesmo que as condições sejam atendidas.
A adição de nós leva, em média, 1,55 minuto, enquanto adicionar 100 nós consome cerca de 1,83 minuto. Defina o tempo de resfriamento da regra de scale-out entre 100 e 300 segundos. Isso permite que os novos nós entrem em operação antes de reavaliar se as métricas de carga do cluster caíram e se outra expansão é necessária.
Para responder mais rápido às variações das métricas, defina o Statistical Period como 1 minuto. Períodos estatísticos longos podem acionar o dimensionamento com base em dados desatualizados, resultando em uso desnecessário de recursos.
Configure a quantidade de instâncias a adicionar ou remover considerando a capacidade de processamento dos nós atuais e o crescimento esperado da carga de trabalho. Estime quantos nós são necessários para trazer a métrica de volta à faixa desejada.
Estabeleça restrições de horário (faixa horária diária em que a regra fica ativa) para combinar diferentes regras e aplicar condições distintas de dimensionamento em cada período.
-
Defina os tamanhos mínimo e máximo.
O parâmetro Limits on Node Quantity of Current Node Group limita a quantidade de nós no grupo atual. O parâmetro Maximum Number of Instances estabelece o limite superior, impedindo que o grupo de nós faça scale-out indefinidamente. Já o parâmetro Minimum Number of Instances define o limite inferior para garantir nós suficientes à sua carga de trabalho. Caso instâncias sejam liberadas inesperadamente, o sistema adiciona novas unidades para manter a contagem mínima.
-
Faça ajustes nas regras.
Após configurar as regras, monitore as métricas e o histórico de atividades de dimensionamento para ajustar os parâmetros conforme necessário.
Se as atividades de dimensionamento forem muito frequentes e as instâncias recém-adicionadas ficarem ociosas ou sofrerem scale-in rapidamente, torne as condições de acionamento mais restritivas usando o operador AND ou aumente o Cooldown Time da regra.
Quando vários eventos de scale-out forem necessários para processar um único job, ou se o dimensionamento não acompanhar a velocidade da carga de trabalho, considere aumentar a quantidade de instâncias adicionadas em cada atividade.