Outil d'estimation des coûts sans serveur Amazon EMR

Outil d'estimation des coûts sans serveur Amazon EMR

Nœud source: 1776349

Amazon EMR sans serveur est une option sans serveur dans Amazon DME Cela permet aux analystes de données et aux ingénieurs d'exécuter facilement des applications à l'aide de cadres d'analyse de données volumineuses open source tels qu'Apache Spark et Hive sans configurer, gérer et mettre à l'échelle des clusters ou des serveurs. Vous bénéficiez de toutes les fonctionnalités des derniers frameworks open source avec l'environnement d'exécution aux performances optimisées d'Amazon EMR, et sans avoir à planifier et à exploiter des instances et des clusters.

Avec Amazon EMR, vous pouvez exécuter vos applications d'analyse sur des clusters EMR dédiés, sur des Service Amazon Elastic Kubernetes (Amazon EKS), ou en utilisant la nouvelle option de déploiement EMR Serverless où vous n'avez pas à gérer les clusters ou les instances. Lorsque vous créez une application Spark ou Hive à l'aide d'une version Amazon EMR, par exemple Amazon EMR 6.8, vous pouvez exécuter l'application sur des clusters EMR, sur des clusters EKS à l'aide Amazon EMR sur EKS, ou en utilisant EMR Serverless sans avoir à changer d'application.

Pour en savoir plus sur les avantages de chaque option de déploiement dans EMR sans serveur, faire référence à Quelles sont certaines des différences de fonctionnalités entre EMR Serverless et Amazon EMR sur EC2 ? dans la FAQ d'Amazon EMR. Vous pouvez également en savoir plus sur le prix de ces options à partir du Page de tarification d'Amazon EMR. De nombreux clients exécutent déjà des applications d'analyse de données sur des clusters EMR et trouvent que la nouvelle option sans serveur est plus simple et moins coûteuse.

Dans cet article, nous expliquons comment vous pouvez estimer ce qu'il en coûterait pour exécuter une application qui s'exécute actuellement sur des clusters EMR à l'aide de la nouvelle option sans serveur, et effectuer cette analyse simplement en utilisant vos métriques d'application actuelles. Cette approche vous aide à évaluer et à adopter l'option de déploiement la plus rentable pour l'application. Cependant, la page de tarification d'Amazon EMR ne vous indique pas comment vous pouvez facilement estimer le coût d'exécution de vos applications de cluster EMR existantes sur EMR Serverless. Dans les sections suivantes, nous décrivons une approche qui vous permet de le faire.

Bien que l'exemple de cet article explique comment obtenir une estimation des coûts pour les applications exécutées sur des clusters EMR, vous pouvez également utiliser l'approche si vous exécutez une application Spark ou Hive ailleurs et souhaitez estimer le coût de son exécution sur EMR. Sans serveur. Par exemple, si vous exécutez des applications Spark ou Hive autogérées sur Cloud de calcul élastique Amazon (Amazon EC2), ou si vous exécutez des tâches Spark sur Colle AWS, nous vous montrons comment utiliser cette approche pour estimer le coût d'exécution de l'application sur EMR Serverless.

Estimation du coût d'exécution des applications sur votre cluster EMR

Lorsque vous exécutez des applications sur des clusters Amazon EMR, vous êtes facturé séparément pour les éléments suivants :

  1. Le prix Amazon EC2 des instances de cluster en cours d'exécution (le prix des serveurs sous-jacents)
  2. Le prix Boutique de blocs élastiques Amazon (Amazon EBS), si vous choisissez d'attacher des volumes EBS
  3. Le prix Amazon EMR pour les instances de cluster

Le coût total de fonctionnement du cluster comprend les trois. Il existe une variété d'options de tarification Amazon EC2 parmi lesquelles vous pouvez choisir, notamment les instances à la demande, les instances réservées d'un an et de 1 ans, les plans d'économie de capacité et les instances ponctuelles. L'option de tarification Amazon EC3 que vous choisissez détermine (a), le prix Amazon EC2. Le coût d'exécution de l'application sur les clusters EMR est la somme de (a), (b) et (c). Vous pouvez calculer ce coût pour la durée de vie de l'exécution du cluster (du moment où un cluster est démarré jusqu'au moment où le cluster est arrêté), ou pour une période de temps spécifique pendant que le cluster est en cours d'exécution. Nous vous recommandons d'exécuter le premier, c'est-à-dire de calculer (a), (b) et (c) à partir du moment où le cluster est démarré jusqu'au moment où le cluster est terminé. Si vous avez configuré des balises pour votre cluster Amazon EMR, vous pouvez facilement obtenir le rapport de coût détaillé pour votre cluster EMR à l'aide d'AWS Cost Explorer.

Estimation du coût d'exécution des mêmes applications à l'aide d'EMR Serverless

Lorsque vous exécutez les mêmes applications à l'aide d'EMR Serverless, vous payez pour la quantité de ressources vCPU, de mémoire et de stockage consommées par vos applications. Il n'y a pas de frais distincts pour les instances EC2 ou les volumes EBS. De plus, vous ne payez que pour les ressources réellement utilisées par l'application et non pour les instances EC2 provisionnées. Par exemple, lors de l'exécution d'applications sur des clusters EMR, lorsqu'une instance EC2 du cluster est partiellement utilisée (par exemple, 16 Go de mémoire sont utilisés sur les 64 Go disponibles sur l'instance, ou 4 VCPU sont utilisés sur les 16 VCPU disponibles sur l'instance ), ou lorsque l'instance EC2 est inactive (par exemple, lorsque l'instance s'initialise ou attend le démarrage d'une application), des frais Amazon EC2, Amazon EMR et Amazon EBS vous sont toujours facturés pour l'instance EC2 complète et pour la durée qui l'instance est active dans le cluster EMR. Avec EMR Serverless, vous ne payez que pour les ressources vCPU, mémoire et stockage utilisées à partir du moment où les travailleurs commencent à exécuter votre travail Spark ou Hive jusqu'au moment où ils s'arrêtent.

Pour estimer le coût d'exécution de votre application EMR Spark ou Hive sur EMR Serverless, vous devez d'abord agréger le nombre total de vCore-secondes de calcul, de Mo de mémoire-secondes et de Go-secondes de stockage consommés par chaque application YARN exécutée sur votre cluster EMR, à partir du moment où le conteneur YARN est démarré jusqu'au moment où le conteneur YARN est terminé. Vous pouvez obtenir ces métriques à partir des journaux du gestionnaire de ressources YARN accessibles à partir du serveur de chronologie YARN ou des outils YARN CLI. Vous pouvez récupérer le temps d'exécution, les vCore-secondes et les Mo-secondes de mémoire utilisés par chacune des applications YARN.

Si votre cluster n'exécute que des applications Spark, il existe une approche plus simple pour estimer. Au lieu d'obtenir les secondes vCore, les Mo de mémoire et les Go de stockage à partir des journaux du gestionnaire de ressources YARN, vous pouvez obtenir ces métriques à partir des journaux d'événements Spark. Nous avons fourni l'outil Estimateur EMR sans serveur, qui peut analyser les journaux d'événements Spark pour vos applications et fournir les métriques agrégées pour votre estimation des coûts.

Après avoir obtenu les métriques d'utilisation de votre application, vous pouvez calculer le coût EMR sans serveur estimé à l'aide de Tarification EMR sans serveur. Multipliez simplement vos vCore-secondes agrégées avec la tarification vCPU EMR Serverless par seconde, multipliez les Mo-secondes de mémoire agrégées avec la tarification de la mémoire EMR Serverless par seconde et multipliez les Go-secondes de stockage avec la tarification du stockage EMR Serverless par seconde (uniquement si les exigences de stockage dépasser 20 Go par travailleur). En additionnant ces coûts pour le vCPU, la mémoire et le stockage, vous pouvez comparer le coût d'exécution des mêmes applications sur EMR Serverless.

Dans cette approche, nous supposons que les performances de l'application sont équivalentes. En d'autres termes, la taille (vCPU, mémoire) et la durée d'exécution de chaque conteneur YARN sur le cluster EMR sont identiques au nombre, à la taille et à la durée d'exécution des travailleurs nécessaires pour exécuter l'application sur EMR Serverless. Nous partons de cette hypothèse car le temps d'exécution EMR pour une version EMR est le même, que l'application soit exécutée sur un cluster EMR ou sur EMR Serverless.

Exemple

Faisons un exemple de comparaison des coûts d'Amazon EMR sur EC2 et EMR Serverless en utilisant un seul cluster.

Nous avons exécuté une application Spark sur un cluster EMR avec cinq nœuds (un principal, deux cœurs et deux tâches) et avons collecté des métriques YARN à l'aide de l'interface de ligne de commande YARN. Le code suivant montre notre allocation de ressources agrégées.

allocation globale des ressources

Nous avons calculé les coûts Amazon EMR sur EC2 comme suit :

  • Instances de cluster
    • Primaire : m5.2xlarge:1
    • Noyau : r5.2xlarge:2
    • Tâche : r5.2xlarge:2
  • Durée d'exécution du cluster = 18 min
  • Coût de l'instance à la demande
    • m5.2xlarge (8 processeurs virtuels, 32 Gio de mémoire)
      • Amazon EC2 : 0.384 USD/h
      • Amazon EMR incrémentiel : 0.096 USD/h
    • r5.2xlarge (8 processeurs virtuels, 64 Gio de mémoire)
      • Amazon EC2 : 0.504 USD/h
      • Amazon EMR incrémentiel : 0.126 USD/h

Voici le calcul du coût EMR sur EC2 :

  • Coût Amazon EMR = ((1 nœud principal x 0.096 USD/h) + (2 nœuds principaux x 0.126 USD/h) + (2 nœuds de tâche x 0.126 USD/h)) = 0.60 USD
  • Coût Amazon EC2 = ((1 principal x 0.384 USD/h) + (2 nœuds principaux x 0.504 USD/h) + (2 nœuds de tâche x 0.504 USD/h)) = 2.40 USD
  • Amazon EMR sur le cluster EC2 coût/h = 0.6 $ + 2.40 $ = 3 $/h * 8/60 h (durée d'exécution en heures)

Le coût total d'Amazon EMR sur Amazon EC2 est de 0.40 USD/h.

Pour calculer le coût EMR Serverless, regroupez les vCore-secondes et les Mo-secondes de mémoire pour la même application que vous avez exécutée précédemment sur le cluster EMR. Multipliez ensuite ces chiffres par le prix du vCPU et de la mémoire EMR Serverless. Nos résultats de calcul sont les suivants :

  • Total_vcore_secondes = 5737
  • Total_Memory_mb_seconds = 120156631
  • Convertir en vCPU/h et mémoire-Go/h :
    • vCPU agrégé/h : 5737/(60*60)=1.59
    • Aggregated memory/hr: 120156631/(60*60*1024)=32.5
  • Coût total des heures de vCPU = 33 vCPU * 0.052624 VCPU/h * 8/60 = 0.23 $
  • Coût total en Go de mémoire = 1.59 Mo * 0.0057785 mémoire/h * 8/60 = 0.00122 USD

Dans cet exemple, le coût total EMR Serverless est de 0.231 $, soit une réduction de 42 %.

Conclusion

Amazon EMR Serverless est une option sans serveur récemment lancée dans Amazon EMR qui facilite l'exécution de frameworks open source tels que Spark et Hive sans avoir à configurer, gérer et mettre à l'échelle des clusters. Les clients qui utilisent déjà des clusters EMR souhaitent comprendre comment ils peuvent estimer le coût d'exécution de leurs applications EMR à l'aide d'EMR Serverless. Nous avons présenté une approche que vous pouvez utiliser pour effectuer une analyse des coûts basée sur l'analyse des métriques d'application de vos clusters EMR.

Nous espérons que vous l'essayerez et que vous nous ferez part de vos commentaires !


À propos des auteurs

Radhika Ravirala est le chef de produit principal chez AWS.

Matthieu Liem est le responsable principal de l'architecture des solutions chez AWS.

Horodatage:

Plus de Big Data AWS