Amazon EMR Serverless kostnadsberegning

Amazon EMR Serverless kostnadsberegning

Kilde node: 1776349

Amazon EMR-serverløs er et serverløst alternativ i Amazon EMR som gjør det enkelt for dataanalytikere og ingeniører å kjøre applikasjoner med åpen kildekode for big data analytics-rammeverk som Apache Spark og Hive uten å konfigurere, administrere og skalere klynger eller servere. Du får alle funksjonene til de nyeste rammeverkene med åpen kildekode med den ytelsesoptimerte kjøretiden til Amazon EMR, og uten å måtte planlegge og drifte forekomster og klynger.

Med Amazon EMR kan du kjøre analyseapplikasjonene dine på dedikerte EMR-klynger, på eksisterende Amazon Elastic Kubernetes-tjeneste (Amazon EKS)-klynger, eller ved å bruke det nye EMR Serverless-distribusjonsalternativet der du ikke trenger å administrere klynger eller forekomster. Når du bygger en Spark- eller Hive-applikasjon ved hjelp av en Amazon EMR-utgivelse, for eksempel Amazon EMR 6.8, kan du kjøre applikasjonen på EMR-klynger, på EKS-klynger ved å bruke Amazon EMR på EKS, eller bruke EMR Serverless uten å måtte endre applikasjonen.

For å lære om fordelene med hvert distribusjonsalternativ i EMR serverløs, referere til Hva er noen av funksjonsforskjellene mellom EMR Serverless og Amazon EMR på EC2? i Amazon EMR FAQ. Du kan også lære om prisene for disse alternativene fra Amazon EMR-prisside. Mange kunder kjører allerede dataanalyseapplikasjoner på EMR-klynger, og opplever at det nye serverløse alternativet er enklere og rimeligere.

I dette innlegget diskuterer vi hvordan du kan estimere hva det kan koste å kjøre en applikasjon som for øyeblikket kjører på EMR-klynger ved å bruke det nye serverløse alternativet, og utføre denne analysen ganske enkelt ved å bruke dine nåværende applikasjonsberegninger. Denne tilnærmingen hjelper deg med å evaluere og ta i bruk distribusjonsalternativet som er mest kostnadseffektivt for applikasjonen. Amazon EMR-prissiden forteller deg imidlertid ikke hvordan du enkelt kan anslå kostnadene ved å kjøre eksisterende EMR-klyngeapplikasjoner på EMR Serverless. I de følgende avsnittene beskriver vi en tilnærming som lar deg gjøre det.

Selv om eksemplet i dette innlegget diskuterer hvordan du kan få et kostnadsestimat for applikasjoner som kjører på EMR-klynger, kan du også bruke tilnærmingen hvis du kjører en Spark- eller Hive-applikasjon andre steder, og vil estimere kostnadene ved å kjøre den på EMR Serverløst. For eksempel hvis du kjører selvstyrte Spark- eller Hive-applikasjoner på Amazon Elastic Compute Cloud (Amazon EC2)-klynger, eller hvis du kjører Spark-jobber på AWS Lim, viser vi deg hvordan du kan bruke denne tilnærmingen til å beregne kostnadene ved å kjøre applikasjonen på EMR Serverless.

Estimerer kostnadene ved å kjøre applikasjoner på EMR-klyngen

Når du kjører applikasjoner på Amazon EMR-klynger, belastes du separat for følgende:

  1. Amazon EC2-prisen for å kjøre klyngeforekomster (prisen for de underliggende serverne)
  2. Prisen for Amazon Elastic Block Store (Amazon EBS) volumer, hvis du velger å legge ved EBS volumer
  3. Amazon EMR-prisen for klyngeforekomstene

De totale kostnadene for å drive klyngen inkluderer alle tre. Det finnes en rekke Amazon EC2-prisalternativer du kan velge mellom, inkludert On Demand, 1- og 3-års reserverte forekomster, kapasitetsbesparelsesplaner og spotforekomster. Amazon EC2-prisalternativet du velger bestemmer (a), Amazon EC2-prisen. Kostnaden for å kjøre applikasjonen på EMR-klynger er summen av (a), (b) og (c). Du kan beregne denne kostnaden for levetiden til å kjøre klyngen (fra tidspunktet en klyngen startes til klyngen avsluttes), eller for en bestemt tidsperiode mens klyngen kjører. Vi anbefaler å kjøre førstnevnte, det vil si å beregne (a), (b) og (c) fra tidspunktet klyngen startes til klyngen avsluttes. Hvis du har satt opp tagger for Amazon EMR-klyngen, kan du enkelt få detaljert kostnadsrapport for EMR-klyngen din ved hjelp av AWS Cost Explorer.

Estimerer kostnadene ved å kjøre de samme applikasjonene ved å bruke EMR Serverless

Når du kjører de samme applikasjonene med EMR Serverless, betaler du for mengden vCPU, minne og lagringsressurser som forbrukes av applikasjonene dine. Det er ingen egen avgift for EC2-forekomster eller EBS-volumer. Og du betaler bare for ressursene som faktisk brukes av applikasjonen og ikke for EC2-forekomster klargjort. For eksempel, når du kjører applikasjoner på EMR-klynger, når en EC2-forekomst i klyngen brukes delvis (f.eks. brukes 16 GB minne av 64 GB tilgjengelig på forekomsten, eller 4 VCPU-er brukes av 16 VCPU-er som er tilgjengelige på forekomsten ), eller når EC2-forekomsten er inaktiv (for eksempel når forekomsten initialiseres eller venter på at en applikasjon skal starte), påløper du fortsatt Amazon EC2-, Amazon EMR- og Amazon EBS-kostnader for hele EC2-forekomsten og for varigheten som instansen er aktiv i EMR-klyngen. Med EMR Serverless betaler du kun for vCPU-, minne- og lagringsressursene som brukes fra det tidspunkt arbeidere begynner å kjøre Spark- eller Hive-jobben til de stopper.

For å estimere kostnadene for å kjøre EMR Spark- eller Hive-applikasjonen din på EMR Serverless, må du først aggregere den totale beregningen av vCore-sekunder, minne MB-sekunder og lagring GB-sekunder som forbrukes av hver YARN-applikasjon som kjørte på EMR-klyngen, fra det tidspunkt GARN-beholderen startes til det tidspunkt GARN-beholderen avsluttes. Du kan hente disse beregningene fra YARN ressursbehandlingslogger tilgjengelig fra YARN tidslinjeserver eller YARN CLI-verktøy. Du kan hente kjøretiden, vCore-sekunder og minne MB-sekunder som brukes av hver av YARN-applikasjonene.

Hvis klyngen din bare kjører Spark-applikasjoner, er det en enklere tilnærming å estimere. I stedet for å hente vCore-sekunder, minne MB-sekunder og lagring GB-sekunder fra YARN ressursbehandlingslogger, kan du hente disse beregningene fra Spark-hendelseslogger. Vi har levert verktøyet EMR Servless Estimator, som kan analysere Spark-hendelsesloggene for appene dine og gi de aggregerte beregningene for kostnadsestimatet ditt.

Etter at du har fått bruksberegningene for applikasjonen din, kan du beregne den estimerte EMR Serverless-kostnaden ved å bruke EMR-serverløse priser. Bare multipliser dine aggregerte vCore-sekunder med EMR Serverless vCPU-priser per sekund, multipliser aggregert minne MB-sekunder med EMR Serverless minnepriser per sekund, og multipliser lagring GB-sekunder med EMR Serverless lagringspriser per sekund (bare hvis lagringskravene overstige 20 GB per arbeider). Ved å legge sammen disse kostnadene for vCPU, minne og lagring, kan du sammenligne kostnadene ved å kjøre de samme applikasjonene på EMR Serverless.

I denne tilnærmingen antar vi at ytelsen til applikasjonen er ekvivalent. Med andre ord, størrelsen (vCPU, minne) og kjøretidsvarigheten for hver YARN-beholder på EMR-klyngen er den samme som antall, størrelse og kjøretidsvarighet for arbeidere som trengs for å kjøre applikasjonen på EMR Serverless. Vi gjør denne antagelsen fordi EMR-kjøretiden for en EMR-utgivelse er den samme uavhengig av om applikasjonen kjøres på en EMR-klynge eller på EMR-serverløs.

Eksempel

La oss gjøre en prissammenligning av Amazon EMR på EC2 og EMR Serverless ved å bruke en enkelt klynge.

Vi kjørte en Spark-applikasjon på en EMR-klynge med fem noder (en primær, to kjerner og to oppgaver og samlet inn YARN-beregninger ved å bruke YARN CLI. Følgende kode viser vår samlede ressursallokering.

samlet ressursallokering

Vi beregnet Amazon EMR på EC2-kostnader som følger:

  • Klyngeforekomster
    • Primær: m5.2xlarge:1
    • Kjerne: r5.2xlarge:2
    • Oppgave: r5.2xlarge:2
  • Klynge kjøretid = 18 min
  • Forekomst on-demand-kostnad
    • m5.2xlarge (8 vCPU, 32 GiB minne)
      • Amazon EC2: $0.384/time
      • Amazon EMR inkrementell: $0.096/time
    • r5.2xlarge (8 vCPU, 64 GiB minne)
      • Amazon EC2: $0.504/time
      • Amazon EMR inkrementell: $0.126/time

Følgende er EMR for EC2 kostnadsberegning:

  • Amazon EMR-kostnad = ((1 primær node x $0.096/time) + (2 kjernenoder x $0.126/time) + (2 oppgavenoder x $0.126/time)) = $0.60
  • Amazon EC2-kostnad = ((1 primær x $0.384/time) + (2 kjernenoder x $0.504/time) + (2 oppgavenoder x $0.504/time)) = $2.40
  • Amazon EMR på EC2-klyngekostnad/time = $0.6 + $2.40 = $3/time * 8/60 timer (kjøretid i timer)

Den totale Amazon EMR-kostnaden på Amazon EC2 er $0.40/time.

For å beregne EMR-serverløse kostnader, samle vCore-sekunder og minne MB-sekunder for det samme programmet du tidligere kjørte på EMR-klyngen. Multipliser deretter disse tallene med EMR Serverless vCPU og minnepris. Våre beregningsresultater er som følger:

  • Total_vcore_seconds = 5737
  • Total_Memory_mb_seconds = 120156631
  • Konverter til vCPU/time og minne-GB/time:
    • Aggregert vCPU/time: 5737/(60*60)=1.59
    • Aggregated memory/hr: 120156631/(60*60*1024)=32.5
  • Total kostnad for vCPU-timer = 33 vCPU * 0.052624 VCPU/time * 8/60 = $0.23
  • Total minnepris på GB = 1.59 MB * 0.0057785 minne/time * 8/60 = $0.00122

I dette eksemplet er den totale EMR Serverless-kostnaden $0.231, en reduksjon på 42 %.

konklusjonen

Amazon EMR Serverless er et nylig lansert serverløst alternativ i Amazon EMR som gjør det enkelt å kjøre åpen kildekode-rammeverk som Spark og Hive uten å konfigurere, administrere og skalere klynger. Kunder som allerede bruker EMR-klynger ønsker å forstå hvordan de kan estimere kostnadene ved å kjøre sine EMR-applikasjoner ved å bruke EMR Serverless. Vi har presentert en tilnærming som du kan bruke til å gjennomføre en kostnadsanalyse basert på å analysere applikasjonsberegninger fra dine EMR-klynger.

Vi håper du prøver dette, og deler tilbakemeldingen din med oss!


Om forfatterne

Radhika Ravirala er hovedproduktsjef i AWS.

Matthew Liem er Senior Solution Architecture Manager hos AWS.

Tidstempel:

Mer fra AWS Big Data