Ajuste de escala avançado para o Amazon EMR - Amazon EMR

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á.

Ajuste de escala avançado para o Amazon EMR

A partir do Amazon EMR na EC2 versão 7.0, você pode aproveitar o Advanced Scaling para controlar a utilização dos recursos do seu cluster. O Advanced Scaling introduz uma escala de utilização-desempenho para ajustar a utilização dos recursos e o nível de desempenho de acordo com as necessidades da sua empresa. O valor que você define determina se seu cluster é mais voltado para a conservação de recursos ou para a escalabilidade para lidar com cargas de trabalho sensíveis service-level-agreement (SLA), onde a conclusão rápida é essencial. Quando o valor do ajuste de escala é ajustado, o ajuste de escala gerenciado interpreta sua intenção e escala de maneira inteligente para otimizar os recursos. Para obter mais informações sobre o Ajuste de escala gerenciado, consulte Configurar o Ajuste de escala gerenciado para o Amazon EMR.

Configurações avançadas de dimensionamento

O valor que você definiu para o Ajuste de escala avançado otimiza o cluster de acordo com seus requisitos. Os valores variam de 1 a 100. Os valores possíveis são 1, 25, 50, 75 e 100. Se você definir o índice para valores diferentes, isso resultará em um erro de validação.

Valores de ajuste de escala são mapeados para estratégias de utilização de recursos. A lista a seguir define várias delas:

  • Utilização otimizada [1]: essa configuração evita o provisionamento excessivo de recursos. Use um valor baixo quando quiser manter os custos baixos e priorizar a utilização eficiente dos recursos. Isso faz com que o cluster aumente a escala verticalmente de maneira menos agressiva. Isso funciona bem para o caso de uso em que costumam ocorrer picos de workload e você não quer que os recursos aumentem muito rapidamente.

  • Equilibrada [50]: equilibra a utilização de recursos e a performance dos trabalhos. Essa configuração é adequada para workloads estáveis em que a maioria dos estágios tem um runtime estável. Também é adequado para workloads com uma combinação de estágios de curta e longa duração. Recomendamos começar com essa configuração se você não tem certeza de qual escolher.

  • Otimizad para performance [100]: essa estratégia prioriza a performance. O cluster se expande de maneira agressiva para garantir que os trabalhos sejam concluídos rapidamente e atendam às metas de performance. O desempenho otimizado é adequado para cargas de trabalho sensíveis service-level-agreement (SLA), nas quais o tempo de execução rápido é essencial.

nota

Os valores intermediários disponíveis fornecem um meio termo entre essas estratégias para ajustar o comportamento de Ajuste de escala avançado do cluster.

Benefícios do escalonamento avançado

Como há variabilidade no ambiente e nos requisitos, como alterações nos volumes de dados, ajustes nas metas de custos e implementações de SLAs, o ajuste de escala do cluster pode ajudar você a ajustar a configuração do cluster para atingir os seus objetivos. Os benefícios importantes incluem:

  • Controle granular aprimorado: a introdução da configuração de performance de utilização permite ajustar facilmente o comportamento de ajuste de escala do cluster de acordo com os seus requisitos. Você pode aumentar a escala verticalmente para atender à demanda por recursos de computação ou reduzir a escala verticalmente para economizar recursos com base em seus padrões de uso.

  • Otimização de custos aprimorada: você pode escolher um valor de utilização baixo, conforme os requisitos, para atender com mais facilidade aos seus objetivos de custo.

Conceitos básicos sobre otimização

Instalação e configuração

Use estas etapas para definir o índice de performance e otimizar sua estratégia de ajuste de escala.

  1. O comando a seguir atualiza um cluster existente com a estratégia de ajuste de escala [1] otimizada para utilização:

    aws emr put-managed-scaling-policy --cluster-id 'cluster-id' \ --managed-scaling-policy '{ "ComputeLimits": { "UnitType": "Instances", "MinimumCapacityUnits": 1, "MaximumCapacityUnits": 2, "MaximumOnDemandCapacityUnits": 2, "MaximumCoreCapacityUnits": 2 }, "ScalingStrategy": "ADVANCED", "UtilizationPerformanceIndex": "1" }' \ --region "region-name"

    Os atributos ScalingStrategy e UtilizationPerformanceIndex são novos e relevantes para a otimização de ajuste de escala. Você pode selecionar diferentes estratégias de ajuste de escala definindo valores correspondentes (1, 25, 50, 75 e 100) para o atributo UtilizationPerformanceIndex na política de ajuste de escala gerenciada.

  2. Para reverter para a estratégia padrão de ajuste de escala gerenciado, execute o comando put-managed-scaling-policy sem incluir os atributos ScalingStrategy e UtilizationPerformanceIndex. (Isso é opcional.) Este exemplo mostra como fazer isso:

    aws emr put-managed-scaling-policy \ --cluster-id 'cluster-id' \ --managed-scaling-policy '{"ComputeLimits":{"UnitType":"Instances","MinimumCapacityUnits":1,"MaximumCapacityUnits":2,"MaximumOnDemandCapacityUnits":2,"MaximumCoreCapacityUnits":2}}' \ --region "region-name"

Usar métricas de monitoramento para rastrear a utilização do cluster

A partir da versão 7.3.0 do EMR, o Amazon EMR publica quatro novas métricas relacionadas à memória e à CPU virtual. Você pode usá-las para medir a utilização do cluster em todas as estratégias de ajuste de escala. Essas métricas estão disponíveis para qualquer caso de uso, mas você pode usar os detalhes fornecidos aqui para monitorar o Ajuste de escala avançado.

As métricas úteis disponíveis incluem:

  • YarnContainersUsedMemoryGBSeconds— Quantidade de memória consumida por aplicativos gerenciados pelo YARN.

  • YarnContainersTotalMemoryGBSeconds— Capacidade total de memória alocada ao YARN dentro do cluster.

  • YarnNodesUsedVCPUSeconds— Total de segundos de VCPU para cada aplicativo gerenciado pelo YARN.

  • YarnNodesTotalVCPUSeconds— Total agregado de segundos de VCPU para memória consumida, incluindo a janela de tempo em que o fio não está pronto.

Você pode analisar métricas de recursos usando o Amazon CloudWatch Logs Insights. Os recursos incluem uma linguagem de consulta específica que ajuda a extrair métricas específicas para uso e ajuste de escala de recursos.

A consulta a seguir, que você pode executar no Amazon CloudWatch console, usa matemática métrica para calcular a utilização média da memória (e1) dividindo a soma contínua da memória consumida (e2) pela soma da memória total (e3):

{ "metrics": [ [ { "expression": "e2/e3", "label": "Average Mem Utilization", "id": "e1", "yAxis": "right" } ], [ { "expression": "RUNNING_SUM(m1)", "label": "RunningTotal-YarnContainersUsedMemoryGBSeconds", "id": "e2", "visible": false } ], [ { "expression": "RUNNING_SUM(m2)", "label": "RunningTotal-YarnContainersTotalMemoryGBSeconds", "id": "e3", "visible": false } ], [ "AWS_EMR_ManagedResize", "YarnContainersUsedMemoryGBSeconds", "ACCOUNT_ID", "793684541905", "COMPONENT", "ManagerService", "JOB_FLOW_ID", "cluster-id", { "id": "m1", "label": "YarnContainersUsedMemoryGBSeconds" } ], [ ".", "YarnContainersTotalMemoryGBSeconds", ".", ".", ".", ".", ".", ".", { "id": "m2", "label": "YarnContainersTotalMemoryGBSeconds" } ] ], "view": "timeSeries", "stacked": false, "region": "region", "period": 60, "stat": "Sum", "title": "Memory Utilization" }

Para consultar registros, você pode selecionar CloudWatch no AWS console. Para obter mais informações sobre como escrever consultas para CloudWatch, consulte Análise de dados de log com o CloudWatch Logs Insights no Guia do usuário do Amazon CloudWatch Logs.

A imagem a seguir mostra essas métricas para um cluster de exemplo:

Gráfico mostrando estatísticas de utilização.

Considerações e limitações

  • A eficácia das estratégias de ajuste de escala pode variar dependendo das características exclusivas da workload e da configuração do cluster. Recomendamos que você experimente a configuração de ajuste de escala para determinar um valor de índice ideal para o seu caso de uso.

  • O Ajuste de escala automático do Amazon EMR é particularmente adequado para workloads em lotes. Para workloads de SQL/data warehouse e streaming, recomendamos usar a estratégia padrão de ajuste de escala gerenciado para obter performance ideal.

  • O Amazon EMR Advanced Scaling não é suportado quando as configurações de rótulos de nós estão habilitadas no cluster. Se as configurações Advanced Scaling e Node Label estiverem habilitadas juntas em um cluster, o comportamento de escalabilidade seria como se a configuração padrão de escalabilidade gerenciada estivesse ativada.

  • A estratégia de ajuste de escala otimizada para performance permite a execução mais rápida do trabalho, mantendo recursos de alta computação por um período mais longo do que a estratégia padrão de ajuste de escala gerenciado. Esse modo prioriza o aumento rápido da escala vertical para atender a demandas de recursos, resultando na conclusão mais rápida do trabalho. Isso pode resultar em custos mais altos em comparação com a estratégia padrão.

  • Nos casos em que o cluster já está otimizado e totalmente utilizado, habilitar o Ajuste de escala avançado pode não oferecer benefícios adicionais. Em algumas situações, habilitar o Ajuste de escala avançado pode aumentar os custos, pois as workloads podem durar mais. Nesses casos, recomendamos usar a estratégia padrão de ajuste de escala gerenciado para garantir a alocação ideal de recursos e a eficiência dos custos.

  • No contexto do Ajuste de escala gerenciado, a ênfase muda para a utilização de recursos ao longo do tempo de execução, à medida que a configuração é ajustada de otimizada para performance [100] para otimizada para utilização [1]. Porém, é importante observar que os resultados podem variar com base na natureza da workload e na topologia do cluster. Para garantir resultados ideais para seu caso de uso, é altamente recomendável testar as estratégias de ajuste de escala com suas workloads para determinar a configuração mais adequada.

  • O PerformanceUtilizationIndexaceita somente os seguintes valores:

    • 1

    • 25

    • 50

    • 75

    • 100

    Quaisquer outros valores enviados resultam em um erro de validação.