Estimador de custos sem servidor do Amazon EMR

Estimador de custos sem servidor do Amazon EMR

Nó Fonte: 1776349

Amazon EMR sem servidor é uma opção sem servidor em Amazon EMR que torna mais fácil para analistas e engenheiros de dados executar aplicativos usando estruturas de análise de big data de código aberto, como Apache Spark e Hive, sem configurar, gerenciar e dimensionar clusters ou servidores. Você obtém todos os recursos das estruturas de código aberto mais recentes com o tempo de execução otimizado para desempenho do Amazon EMR e sem precisar planejar e operar instâncias e clusters.

Com o Amazon EMR, você pode executar seus aplicativos analíticos em clusters EMR dedicados, em Serviço Amazon Elastic Kubernetes (Amazon EKS) ou usando a nova opção de implantação EMR Serverless em que você não precisa gerenciar clusters ou instâncias. Ao criar um aplicativo Spark ou Hive usando uma versão do Amazon EMR, digamos Amazon EMR 6.8, você pode executar o aplicativo em clusters EMR, em clusters EKS usando Amazon EMR no EKS, ou usando o EMR Serverless sem precisar alterar o aplicativo.

Para saber mais sobre os benefícios de cada opção de implantação em EMR sem servidor, referem-se a Quais são algumas das diferenças de recursos entre o EMR Serverless e o Amazon EMR no EC2? nas perguntas frequentes do Amazon EMR. Você também pode saber mais sobre os preços dessas opções no Página de preços do Amazon EMR. Muitos clientes já executam aplicativos de análise de dados em clusters EMR e descobrem que a nova opção sem servidor é mais simples e mais barata.

Nesta postagem, discutimos como você pode estimar quanto pode custar para executar um aplicativo que atualmente é executado em clusters EMR usando a nova opção sem servidor e realizar essa análise simplesmente usando suas métricas de aplicativo atuais. Essa abordagem ajuda você a avaliar e adotar a opção de implantação mais econômica para o aplicativo. No entanto, a página de preços do Amazon EMR não informa como você pode estimar facilmente o custo de execução de seus aplicativos de cluster EMR existentes no EMR Serverless. Nas seções a seguir, descrevemos uma abordagem que permite fazer isso.

Embora o exemplo nesta postagem discuta como você pode obter uma estimativa de custo para aplicativos em execução em clusters EMR, você também pode usar a abordagem se estiver executando um aplicativo Spark ou Hive em outro lugar e quiser estimar o custo de executá-lo em EMR Sem servidor. Por exemplo, se você executar aplicativos Spark ou Hive autogerenciados em Amazon Elastic Compute Nuvem (Amazon EC2), ou se você executar trabalhos do Spark em Cola AWS, mostramos como você pode usar essa abordagem para estimar o custo de execução do aplicativo no EMR Serverless.

Estimando o custo de execução de aplicativos em seu cluster EMR

Ao executar aplicativos em clusters do Amazon EMR, você é cobrado separadamente pelo seguinte:

  1. O preço do Amazon EC2 para executar instâncias de cluster (o preço dos servidores subjacentes)
  2. O preço para Loja de blocos elásticos da Amazon (Amazon EBS), se você optar por anexar volumes EBS
  3. O preço do Amazon EMR para as instâncias de cluster

O custo total de execução do cluster inclui todos os três. Há uma variedade de opções de preço do Amazon EC2 que você pode escolher, incluindo On Demand, instâncias reservadas de 1 e 3 anos, planos de economia de capacidade e instâncias spot. A opção de preço do Amazon EC2 que você escolher determina (a), o preço do Amazon EC2. O custo de execução do aplicativo em clusters EMR é a soma de (a), (b) e (c). Você pode calcular esse custo para o tempo de vida da execução do cluster (do momento em que um cluster é iniciado até o momento em que é encerrado) ou por um período específico enquanto o cluster está em execução. Recomendamos executar o primeiro, ou seja, calcular (a), (b) e (c) desde o momento em que o cluster é iniciado até o momento em que o cluster é finalizado. Se você configurou tags para seu cluster Amazon EMR, você pode facilmente obter o relatório de custo detalhado para seu cluster EMR usando o AWS Cost Explorer.

Estimando o custo de executar os mesmos aplicativos usando o EMR Serverless

Ao executar os mesmos aplicativos usando o EMR Serverless, você paga pela quantidade de vCPU, memória e recursos de armazenamento consumidos por seus aplicativos. Não há cobrança separada para instâncias EC2 ou volumes EBS. E você paga apenas pelos recursos que são realmente usados ​​pelo aplicativo e não pelas instâncias do EC2 provisionadas. Por exemplo, ao executar aplicativos em clusters EMR, quando uma instância do EC2 no cluster é parcialmente utilizada (digamos, 16 GB de memória são usados ​​de 64 GB disponíveis na instância ou 4 VCPUs são utilizados de 16 VCPUs disponíveis na instância ) ou quando a instância do EC2 está ociosa (por exemplo, quando a instância está inicializando ou aguardando o início de um aplicativo), você ainda incorrerá em cobranças do Amazon EC2, Amazon EMR e Amazon EBS pela instância completa do EC2 e pela duração que a instância está ativa no cluster EMR. Com o EMR Serverless, você paga apenas pelos recursos de vCPU, memória e armazenamento usados ​​desde o momento em que os trabalhadores começam a executar seu trabalho Spark ou Hive até o momento em que param.

Para estimar o custo de execução de seu aplicativo EMR Spark ou Hive no EMR Serverless, você precisa primeiro agregar o total de vCore-segundos de computação, memória MB-segundos e armazenamento GB-segundos consumidos por cada aplicativo YARN executado em seu cluster EMR, desde o momento em que o contêiner YARN é iniciado até o momento em que o contêiner YARN é finalizado. Você pode obter essas métricas dos logs do gerenciador de recursos YARN acessíveis do servidor de linha do tempo YARN ou das ferramentas YARN CLI. Você pode recuperar o tempo de execução, os segundos de vCore e os segundos de MB de memória usados ​​por cada um dos aplicativos YARN.

Se seu cluster executa apenas aplicativos Spark, há uma abordagem mais simples para estimar. Em vez de obter os segundos de vCore, os segundos de MB de memória e os segundos de armazenamento em GB dos logs do gerenciador de recursos do YARN, você pode obter essas métricas dos logs de eventos do Spark. Nós fornecemos a ferramenta Estimador sem servidor EMR, que pode analisar os logs de eventos do Spark para seus aplicativos e fornecer as métricas agregadas para sua estimativa de custo.

Depois de obter as métricas de uso para seu aplicativo, você pode calcular o custo estimado sem servidor EMR usando Preços sem servidor EMR. Simplesmente multiplique seus vCore-seconds agregados com preços por segundo de vCPU sem servidor EMR, multiplique MB-segundos de memória agregada com preços de memória sem servidor EMR por segundo e multiplique GB-segundos de armazenamento com preços de armazenamento sem servidor EMR por segundo (somente se os requisitos de armazenamento exceder 20 GB por trabalhador). Ao somar esses custos de vCPU, memória e armazenamento, você pode comparar o custo de executar os mesmos aplicativos no EMR Serverless.

Nesta abordagem, assumimos que o desempenho do aplicativo é equivalente. Em outras palavras, o tamanho (vCPU, memória) e a duração do tempo de execução para cada contêiner YARN no cluster EMR é igual ao número, tamanho e duração do tempo de execução dos trabalhadores necessários para executar o aplicativo no EMR Serverless. Fazemos essa suposição porque o tempo de execução do EMR para uma versão do EMR é o mesmo, independentemente de o aplicativo ser executado em um cluster EMR ou em EMR Serverless.

Exemplo

Vamos fazer uma amostra de comparação de custo do Amazon EMR no EC2 e EMR Serverless usando um único cluster.

Executamos um aplicativo Spark em um cluster EMR com cinco nós (um primário, dois núcleos e duas tarefas) e coletamos métricas do YARN usando a CLI do YARN. O código a seguir mostra nossa alocação agregada de recursos.

alocação agregada de recursos

Calculamos o Amazon EMR nos custos do EC2 da seguinte maneira:

  • Instâncias de cluster
    • Primário: m5.2xlarge:1
    • Núcleo: r5.2xlarge:2
    • Tarefa: r5.2xlarge:2
  • Tempo de execução do cluster = 18 minutos
  • Custo sob demanda da instância
    • m5.2xlarge (8 vCPU, 32 GiB de memória)
      • Amazon EC2: US$ 0.384/h
      • Amazon EMR incremental: US$ 0.096/h
    • r5.2xlarge (8 vCPU, 64 GiB de memória)
      • Amazon EC2: US$ 0.504/h
      • Amazon EMR incremental: US$ 0.126/h

O seguinte é o EMR no cálculo de custo do EC2:

  • Custo do Amazon EMR = ((1 nó principal x US$ 0.096/h) + (2 nós principais x US$ 0.126/h) + (2 nós de tarefa x US$ 0.126/h)) = US$ 0.60
  • Custo do Amazon EC2 = ((1 principal x US$ 0.384/h) + (2 nós principais x US$ 0.504/h) + (2 nós de tarefa x US$ 0.504/h)) = US$ 2.40
  • Custo/h do cluster do Amazon EMR no EC2 = US$ 0.6 + US$ 2.40 = US$ 3/h * 8/60 h (tempo de execução em horas)

O custo total do Amazon EMR no Amazon EC2 é de US$ 0.40/h.

Para calcular o custo sem servidor EMR, agregue os segundos de vCore e os MB de memória para o mesmo aplicativo que você executou anteriormente no cluster EMR. Em seguida, multiplique esses números pelo preço da memória e da vCPU sem servidor EMR. Nossos resultados de cálculo são os seguintes:

  • Total_vcore_seconds = 5737
  • Total_Memória_mb_segundos = 120156631
  • Converter para vCPU/hr e memória-GB/hr:
    • vCPU agregada/h: 5737/(60*60)=1.59
    • Aggregated memory/hr: 120156631/(60*60*1024)=32.5
  • Custo total de horas de vCPU = 33 vCPU * 0.052624 VCPU/h * 8/60 = US$ 0.23
  • Custo total de GB de memória = 1.59 MB * 0.0057785 memória/h * 8/60 = US$ 0.00122

Neste exemplo, o custo total sem servidor EMR é de US$ 0.231, uma redução de 42%.

Conclusão

O Amazon EMR Serverless é uma opção sem servidor lançada recentemente no Amazon EMR que facilita a execução de estruturas de código aberto, como Spark e Hive, sem configurar, gerenciar e dimensionar clusters. Os clientes que já usam clusters EMR querem entender como podem estimar o custo de execução de seus aplicativos EMR usando o EMR Serverless. Apresentamos uma abordagem que você pode usar para conduzir uma análise de custo com base na análise de métricas de aplicativos de seus clusters EMR.

Esperamos que você experimente e compartilhe seus comentários conosco!


Sobre os autores

Radhika Ravirala é o principal gerente de produtos da AWS.

Mateus Liem é gerente sênior de arquitetura de soluções da AWS.

Carimbo de hora:

Mais de Grandes dados da AWS