Amazon EMR Serverless omkostningsberegning

Amazon EMR Serverless omkostningsberegning

Kildeknude: 1776349

Amazon EMR-serverløs er en serverløs mulighed i Amazon EMR der gør det nemt for dataanalytikere og ingeniører at køre applikationer ved hjælp af open source big data analytics frameworks såsom Apache Spark og Hive uden at konfigurere, administrere og skalere klynger eller servere. Du får alle funktionerne i de nyeste open source-frameworks med den præstationsoptimerede kørselstid fra Amazon EMR og uden at skulle planlægge og betjene instanser og klynger.

Med Amazon EMR kan du køre dine analyseapplikationer på dedikerede EMR-klynger på eksisterende Amazon Elastic Kubernetes Service (Amazon EKS)-klynger, eller ved at bruge den nye EMR Serverless-implementeringsmulighed, hvor du ikke behøver at administrere klynger eller forekomster. Når du bygger en Spark- eller Hive-applikation ved hjælp af en Amazon EMR-udgivelse, f.eks. Amazon EMR 6.8, kan du køre applikationen på EMR-klynger, på EKS-klynger ved hjælp af Amazon EMR på EKS, eller bruge EMR Serverless uden at skulle ændre applikationen.

For at lære om fordelene ved hver implementeringsmulighed i EMR serverløs, Se Hvad er nogle af funktionsforskellene mellem EMR Serverless og Amazon EMR på EC2? i Amazon EMR FAQ. Du kan også lære om priserne for disse muligheder fra Amazon EMR-prisside. Mange kunder kører allerede dataanalyseapplikationer på EMR-klynger og oplever, at den nye serverløse mulighed er enklere og billigere.

I dette indlæg diskuterer vi, hvordan du kan estimere, hvad det kan koste at køre en applikation, der i øjeblikket kører på EMR-klynger ved hjælp af den nye serverløse mulighed, og udføre denne analyse blot ved at bruge dine nuværende applikationsmetrics. Denne tilgang hjælper dig med at evaluere og anvende den implementeringsmulighed, der er mest omkostningseffektiv for applikationen. Amazon EMR-prissiden fortæller dig dog ikke, hvordan du nemt kan estimere omkostningerne ved at køre dine eksisterende EMR-klyngeapplikationer på EMR Serverless. I de følgende afsnit beskriver vi en tilgang, der gør dig i stand til at gøre det.

Selvom eksemplet i dette indlæg diskuterer, hvordan du kan få et omkostningsestimat for applikationer, der kører på EMR-klynger, kan du også bruge tilgangen, hvis du kører en Spark- eller Hive-applikation et andet sted og vil estimere omkostningerne ved at køre den på EMR Serverløs. For eksempel, hvis du kører selvadministrerede Spark- eller Hive-applikationer på Amazon Elastic Compute Cloud (Amazon EC2) klynger, eller hvis du kører Spark jobs på AWS Lim, viser vi dig, hvordan du kan bruge denne tilgang til at estimere omkostningerne ved at køre applikationen på EMR Serverless.

Estimering af omkostningerne ved at køre applikationer på din EMR-klynge

Når du kører applikationer på Amazon EMR-klynger, opkræves du separat for følgende:

  1. Amazon EC2-prisen for at køre klyngeforekomster (prisen for de underliggende servere)
  2. Prisen for Amazon Elastic Block Store (Amazon EBS) volumener, hvis du vælger at vedhæfte EBS volumener
  3. Amazon EMR-prisen for klyngeforekomsterne

De samlede omkostninger ved at drive klyngen inkluderer alle tre. Der er en række Amazon EC2-prissætningsmuligheder, du kan vælge imellem, herunder On Demand, 1- og 3-årige reserverede forekomster, kapacitetsbesparelsesplaner og spotforekomster. Amazon EC2-prismuligheden, som du vælger, bestemmer (a), Amazon EC2-prisen. Omkostningerne ved at køre applikationen på EMR-klynger er summen af ​​(a), (b) og (c). Du kan beregne denne pris for hele levetiden for at køre klyngen (fra det tidspunkt, hvor en klynge startes, til klyngen afsluttes), eller i en bestemt periode, mens klyngen kører. Vi anbefaler at køre førstnævnte, det vil sige at beregne (a), (b) og (c) fra det tidspunkt, hvor klyngen startes til det tidspunkt, hvor klyngen afsluttes. Hvis du har opsat tags til din Amazon EMR-klynge, kan du nemt få detaljeret omkostningsrapport for din EMR-klynge ved hjælp af AWS Cost Explorer.

Estimering af omkostningerne ved at køre de samme applikationer ved hjælp af EMR Serverless

Når du kører de samme applikationer ved hjælp af EMR Serverless, betaler du for mængden af ​​vCPU, hukommelse og lagerressourcer, der forbruges af dine applikationer. Der er ingen særskilt afgift for EC2-instanser eller EBS-volumener. Og du betaler kun for de ressourcer, der faktisk bruges af applikationen og ikke for EC2-forekomster, der er klargjort. For eksempel, når der køres applikationer på EMR-klynger, når en EC2-instans i klyngen bruges delvist (f.eks. bruges 16 GB hukommelse ud af 64 GB tilgængelig på instansen, eller 4 VCPU'er bruges ud af 16 tilgængelige VCPU'er på instansen ), eller når EC2-instansen er inaktiv (f.eks. når instansen initialiserer eller venter på, at en applikation starter), pålægges du stadig Amazon EC2-, Amazon EMR- og Amazon EBS-gebyrer for hele EC2-instansen og i den varighed, instansen er aktiv i EMR-klyngen. Med EMR Serverless betaler du kun for vCPU, hukommelse og lagerressourcer, der bruges fra det tidspunkt, hvor arbejderne begynder at køre dit Spark- eller Hive-job, indtil de stopper.

For at estimere omkostningerne ved at køre din EMR Spark- eller Hive-applikation på EMR-serverløs, skal du først aggregere det samlede antal vCore-sekunder, hukommelses-MB-sekunder og lager-GB-sekunder, der forbruges af hver YARN-applikation, der kørte på din EMR-klynge, fra det tidspunkt, hvor GARN-beholderen startes til det tidspunkt, hvor GARN-beholderen er afsluttet. Du kan hente disse metrics fra YARN-ressourcemanagerlogfiler, der er tilgængelige fra YARN-tidslinjeserveren eller YARN CLI-værktøjer. Du kan hente den køretid, vCore-sekunder og hukommelse MB-sekunder, der bruges af hver af YARN-applikationerne.

Hvis din klynge kun kører Spark-applikationer, er der en enklere tilgang til estimering. I stedet for at hente vCore-sekunder, hukommelse MB-sekunder og lager GB-sekunder fra YARN-ressourcemanagerlogfiler, kan du hente disse metrics fra Spark-hændelseslogfiler. Vi har leveret værktøjet EMR Servless Estimator, som kan parse Spark-hændelseslogfilerne for dine applikationer og levere de aggregerede metrics til dit omkostningsestimat.

Når du har fået forbrugsmålingerne for din applikation, kan du beregne de anslåede EMR-serverløse omkostninger ved hjælp af EMR-serverløse priser. Du skal blot multiplicere dine aggregerede vCore-sekunder med EMR Serverless vCPU-priser pr. sekund, multiplicere aggregerede hukommelse MB-sekunder med EMR Serverless hukommelsespriser pr. sekund, og multiplicere lagring GB-sekunder med EMR Serverless lagerpris pr. sekund (kun hvis lagerkravene overstige 20 GB pr. arbejder). Ved at lægge disse omkostninger sammen for vCPU, hukommelse og lagring kan du sammenligne omkostningerne ved at køre de samme applikationer på EMR Serverless.

I denne tilgang antager vi, at applikationens ydeevne er ækvivalent. Med andre ord er størrelsen (vCPU, hukommelse) og runtime-varigheden for hver YARN-beholder på EMR-klyngen den samme som antallet, størrelsen og runtime-varigheden af ​​arbejdere, der er nødvendige for at køre applikationen på EMR Serverless. Vi gør denne antagelse, fordi EMR-runtiden for en EMR-udgivelse er den samme, uanset om applikationen køres på en EMR-klynge eller på EMR-serverløs.

Eksempel

Lad os lave en prøveprissammenligning af Amazon EMR på EC2 og EMR Serverless ved hjælp af en enkelt klynge.

Vi kørte en Spark-applikation på en EMR-klynge med fem noder (en primær, to kerne og to opgaver og indsamlede YARN-metrikker ved hjælp af YARN CLI. Følgende kode viser vores samlede ressourceallokering.

samlet ressourceallokering

Vi beregnede Amazon EMR på EC2-omkostninger som følger:

  • Klyngeforekomster
    • Primær: m5.2xlarge:1
    • Kerne: r5.2xlarge:2
    • Opgave: r5.2xlarge:2
  • Klyngedriftstid = 18 min
  • Forekomst on-demand-omkostninger
    • m5.2xlarge (8 vCPU, 32 GiB hukommelse)
      • Amazon EC2: $0.384/time
      • Amazon EMR inkrementel: $0.096/time
    • r5.2xlarge (8 vCPU, 64 GiB hukommelse)
      • Amazon EC2: $0.504/time
      • Amazon EMR inkrementel: $0.126/time

Følgende er EMR om EC2-omkostningsberegning:

  • Amazon EMR-pris = ((1 primær knude x 0.096 USD/time) + (2 kernenoder x 0.126 USD/time) + (2 opgavenoder x 0.126 USD/time)) = 0.60 USD
  • Amazon EC2-pris = ((1 primær x $0.384/time) + (2 kernenoder x $0.504/time) + (2 opgavenoder x $0.504/time)) = $2.40
  • Amazon EMR på EC2-klyngepris/time = 0.6 USD + 2.40 USD = 3 USD/time * 8/60 t (kørselstid i timer)

De samlede Amazon EMR-omkostninger på Amazon EC2 er $0.40/time.

For at beregne EMR-serverløse omkostninger skal du samle vCore-sekunder og hukommelse MB-sekunder for det samme program, som du tidligere kørte på EMR-klyngen. Derefter ganges disse tal med EMR Serverless vCPU og hukommelsesprisen. Vores beregningsresultater er som følger:

  • Total_vcore_seconds = 5737
  • Total_Memory_mb_seconds = 120156631
  • Konverter til vCPU/time og memory-GB/time:
    • Aggregeret vCPU/time: 5737/(60*60)=1.59
    • Aggregated memory/hr: 120156631/(60*60*1024)=32.5
  • Samlet vCPU-timers pris = 33 vCPU * 0.052624 VCPU/time * 8/60 = $0.23
  • Samlet hukommelse GB-pris = 1.59 MB * 0.0057785 hukommelse/time * 8/60 = $0.00122

I dette eksempel er den samlede EMR Serverless-omkostning $0.231, en reduktion på 42%.

Konklusion

Amazon EMR Serverless er en nyligt lanceret serverløs mulighed i Amazon EMR, der gør det nemt at køre open source frameworks som Spark og Hive uden at konfigurere, administrere og skalere klynger. Kunder, der allerede bruger EMR-klynger, ønsker at forstå, hvordan de kan estimere omkostningerne ved at køre deres EMR-applikationer ved hjælp af EMR Serverless. Vi har præsenteret en tilgang, som du kan bruge til at udføre en omkostningsanalyse baseret på analyse af applikationsmetrikker fra dine EMR-klynger.

Vi håber, du giver dette en chance og deler din feedback med os!


Om forfatterne

Radhika Ravirala er hovedproduktchef hos AWS.

Matthew Liem er Senior Solution Architecture Manager hos AWS.

Tidsstempel:

Mere fra AWS Big Data