Stima dei costi di Amazon EMR Serverless

Stima dei costi di Amazon EMR Serverless

Nodo di origine: 1776349

Amazon EMR senza server è un'opzione serverless in Amazon EMR Ciò semplifica l'esecuzione di applicazioni da parte di analisti di dati e ingegneri utilizzando framework di analisi dei big data open source come Apache Spark e Hive senza configurare, gestire e ridimensionare cluster o server. Ottieni tutte le funzionalità dei più recenti framework open source con il runtime ottimizzato per le prestazioni di Amazon EMR e senza dover pianificare e gestire istanze e cluster.

Con Amazon EMR, puoi eseguire le tue applicazioni di analisi su cluster EMR dedicati, su esistenti Servizio Amazon Elastic Kubernetes (Amazon EKS) o utilizzando la nuova opzione di distribuzione EMR Serverless in cui non è necessario gestire cluster o istanze. Quando crei un'applicazione Spark o Hive utilizzando una versione Amazon EMR, ad esempio Amazon EMR 6.8, puoi eseguire l'applicazione su cluster EMR, su cluster EKS utilizzando Amazon EMR su EKSo utilizzando EMR Serverless senza dover modificare l'applicazione.

Per conoscere i vantaggi di ciascuna opzione di implementazione in EMR senza server, fare riferimento a Quali sono alcune delle differenze di funzionalità tra EMR Serverless e Amazon EMR su EC2? nelle Domande frequenti su Amazon EMR. Puoi anche conoscere i prezzi per queste opzioni dal Pagina dei prezzi di Amazon EMR. Molti clienti eseguono già applicazioni di analisi dei dati su cluster EMR e scoprono che la nuova opzione serverless è più semplice e meno costosa.

In questo post, discutiamo di come stimare quanto potrebbe costare l'esecuzione di un'applicazione attualmente in esecuzione su cluster EMR utilizzando la nuova opzione serverless ed eseguire questa analisi semplicemente utilizzando le metriche dell'applicazione corrente. Questo approccio consente di valutare e adottare l'opzione di distribuzione più conveniente per l'applicazione. Tuttavia, la pagina dei prezzi di Amazon EMR non indica come stimare facilmente il costo dell'esecuzione delle applicazioni cluster EMR esistenti su EMR Serverless. Nelle sezioni seguenti, descriviamo un approccio che consente di farlo.

Sebbene l'esempio in questo post illustri come ottenere una stima dei costi per le applicazioni in esecuzione su cluster EMR, puoi anche utilizzare l'approccio se stai eseguendo un'applicazione Spark o Hive altrove e desideri stimare il costo della sua esecuzione su EMR Senza server. Ad esempio, se esegui applicazioni Spark o Hive autogestite su Cloud di calcolo elastico di Amazon (Amazon EC2) o se esegui processi Spark su Colla AWS, ti mostriamo come utilizzare questo approccio per stimare il costo di esecuzione dell'applicazione su EMR Serverless.

Stima del costo di esecuzione delle applicazioni sul tuo cluster EMR

Quando esegui applicazioni su cluster Amazon EMR, ti vengono addebitati separatamente i seguenti costi:

  1. Il prezzo Amazon EC2 delle istanze cluster in esecuzione (il prezzo per i server sottostanti)
  2. Il prezzo per Negozio di blocchi elastici di Amazon (Amazon EBS), se scegli di collegare i volumi EBS
  3. Il prezzo di Amazon EMR per le istanze del cluster

Il costo totale dell'esecuzione del cluster include tutti e tre. È possibile scegliere tra diverse opzioni di prezzo di Amazon EC2, tra cui on demand, istanze riservate di 1 e 3 anni, piani di risparmio di capacità e istanze Spot. L'opzione di prezzo di Amazon EC2 che scegli determina (a), il prezzo di Amazon EC2. Il costo di esecuzione dell'applicazione sui cluster EMR è la somma di (a), (b) e (c). Puoi calcolare questo costo per la durata dell'esecuzione del cluster (dal momento in cui un cluster viene avviato al momento in cui il cluster viene terminato) o per un periodo di tempo specifico mentre il cluster è in esecuzione. Si consiglia di eseguire il primo, ovvero calcolare (a), (b) e (c) dal momento in cui il cluster viene avviato al momento in cui il cluster viene terminato. Se hai impostato i tag per il tuo cluster Amazon EMR, puoi facilmente ottenere il file report dettagliato sui costi per il tuo cluster EMR utilizzando AWS Cost Explorer.

Stima del costo dell'esecuzione delle stesse applicazioni utilizzando EMR Serverless

Quando esegui le stesse applicazioni utilizzando EMR Serverless, paghi per la quantità di vCPU, memoria e risorse di storage consumate dalle tue applicazioni. Non è previsto alcun addebito separato per le istanze EC2 o i volumi EBS. Inoltre, paghi solo per le risorse effettivamente utilizzate dall'applicazione e non per le istanze EC2 di cui è stato eseguito il provisioning. Ad esempio, durante l'esecuzione di applicazioni su cluster EMR, quando un'istanza EC2 nel cluster viene parzialmente utilizzata (ad esempio, vengono utilizzati 16 GB di memoria su 64 GB disponibili sull'istanza o vengono utilizzate 4 VCPU su 16 VCPU disponibili sull'istanza ) o quando l'istanza EC2 è inattiva (ad esempio, quando l'istanza è in fase di inizializzazione o in attesa dell'avvio di un'applicazione), dovrai comunque sostenere i costi di Amazon EC2, Amazon EMR e Amazon EBS per l'intera istanza EC2 e per la durata l'istanza è attiva nel cluster EMR. Con EMR Serverless, paghi solo per le risorse vCPU, memoria e storage utilizzate dal momento in cui i worker iniziano a eseguire il tuo job Spark o Hive fino al momento in cui si interrompono.

Per stimare il costo dell'esecuzione dell'applicazione EMR Spark o Hive su EMR Serverless, devi prima aggregare il totale di vCore-secondi di calcolo, MB-secondi di memoria e GB-secondi di archiviazione consumati da ciascuna applicazione YARN eseguita sul tuo cluster EMR, dal momento in cui il contenitore YARN viene avviato al momento in cui il contenitore YARN viene terminato. Puoi ottenere queste metriche dai log del gestore risorse YARN accessibili dal server della sequenza temporale YARN o dagli strumenti dell'interfaccia a riga di comando YARN. Puoi recuperare il tempo di esecuzione, vCore-secondi e MB-secondi di memoria utilizzati da ciascuna delle applicazioni YARN.

Se il tuo cluster esegue solo applicazioni Spark, esiste un approccio più semplice per la stima. Invece di ottenere vCore-secondi, MB-secondi di memoria e GB-secondi di archiviazione dai log del gestore risorse YARN, puoi ottenere queste metriche dai log eventi di Spark. Abbiamo fornito lo strumento Stima EMR senza server, che può analizzare i log eventi di Spark per le tue applicazioni e fornire le metriche aggregate per la stima dei costi.

Dopo aver ottenuto le metriche di utilizzo per la tua applicazione, puoi calcolare il costo stimato di EMR Serverless utilizzando Prezzi serverless EMR. È sufficiente moltiplicare i tuoi vCore-secondi aggregati con i prezzi al secondo di vCPU serverless EMR, moltiplicare i MB-secondi di memoria aggregata con i prezzi al secondo della memoria serverless EMR e moltiplicare i GB-secondi di archiviazione con i prezzi al secondo dello storage serverless EMR (solo se i requisiti di archiviazione superare i 20 GB per lavoratore). Sommando questi costi per vCPU, memoria e storage, puoi confrontare il costo dell'esecuzione delle stesse applicazioni su EMR Serverless.

In questo approccio, assumiamo che le prestazioni dell'applicazione siano equivalenti. In altre parole, la dimensione (vCPU, memoria) e la durata del runtime per ogni container YARN nel cluster EMR è la stessa del numero, della dimensione e della durata del runtime dei nodi di lavoro necessari per eseguire l'applicazione su EMR Serverless. Facciamo questo presupposto perché il runtime EMR per una versione EMR è lo stesso indipendentemente dal fatto che l'applicazione venga eseguita su un cluster EMR o su EMR Serverless.

Esempio

Facciamo un esempio di confronto dei costi di Amazon EMR su EC2 e EMR Serverless utilizzando un singolo cluster.

Abbiamo eseguito un'applicazione Spark su un cluster EMR con cinque nodi (uno primario, due core e due attività e abbiamo raccolto i parametri YARN utilizzando l'interfaccia a riga di comando YARN. Il codice seguente mostra l'allocazione delle risorse aggregate.

allocazione aggregata delle risorse

Abbiamo calcolato l'Amazon EMR sui costi EC2 come segue:

  • Istanze del cluster
    • Primario: m5.2xlarge:1
    • Nucleo: r5.2xlarge:2
    • Compito: r5.2xlarge:2
  • Tempo di esecuzione del cluster = 18 min
  • Costo dell'istanza on demand
    • m5.2xlarge (8 vCPU, 32 GiB di memoria)
      • Amazon EC2: $ 0.384/ora
      • Incrementale Amazon EMR: $ 0.096/ora
    • r5.2xlarge (8 vCPU, 64 GiB di memoria)
      • Amazon EC2: $ 0.504/ora
      • Incrementale Amazon EMR: $ 0.126/ora

Di seguito è riportato l'EMR sul calcolo dei costi EC2:

  • Costo di Amazon EMR = ((1 nodo primario x 0.096 USD/ora) + (2 nodi principali x 0.126 USD/ora) + (2 nodi attività x 0.126 USD/ora)) = 0.60 USD
  • Costo di Amazon EC2 = ((1 primario x 0.384 USD/ora) + (2 nodi principali x 0.504 USD/ora) + (2 nodi attività x 0.504 USD/ora)) = 2.40 USD
  • Amazon EMR su cluster EC2 costo/ora = $ 0.6 + $ 2.40 = $ 3/ora * 8/60 ore (runtime in ore)

Il costo totale di Amazon EMR su Amazon EC2 è di $ 0.40/ora.

Per calcolare il costo serverless EMR, aggrega i vCore-secondi e i MB-secondi di memoria per la stessa applicazione eseguita in precedenza nel cluster EMR. Quindi moltiplica questi numeri per la vCPU serverless EMR e il prezzo della memoria. I nostri risultati di calcolo sono i seguenti:

  • Total_vcore_seconds = 5737
  • Total_Memory_mb_seconds = 120156631
  • Converti in vCPU/ora e memoria-GB/ora:
    • vCPU/ora aggregata: 5737/(60*60)=1.59
    • Aggregated memory/hr: 120156631/(60*60*1024)=32.5
  • Costo totale ore vCPU = 33 vCPU * 0.052624 VCPU/ora * 8/60 = $ 0.23
  • Costo totale GB di memoria = 1.59 MB * 0.0057785 memoria/ora * 8/60 = $ 0.00122

In questo esempio, il costo totale di EMR Serverless è di $ 0.231, una riduzione del 42%.

Conclusione

Amazon EMR Serverless è un'opzione serverless lanciata di recente in Amazon EMR che semplifica l'esecuzione di framework open source come Spark e Hive senza configurare, gestire e ridimensionare i cluster. I clienti che già utilizzano i cluster EMR vogliono capire come possono stimare il costo di esecuzione delle loro applicazioni EMR utilizzando EMR Serverless. Abbiamo presentato un approccio che puoi utilizzare per condurre un'analisi dei costi basata sull'analisi delle metriche dell'applicazione dai tuoi cluster EMR.

Ci auguriamo che tu ci provi e condividi il tuo feedback con noi!


Circa gli autori

Radhika Ravirala è il Principal Product Manager di AWS.

Matteo Liem è Senior Solution Architecture Manager presso AWS.

Timestamp:

Di più da Big Data di AWS