Utilisation du stockage sans serveur pour Amazon EMR Serverless - Amazon EMR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation du stockage sans serveur pour Amazon EMR Serverless

Avec les versions 7.12 et supérieures d'Amazon EMR, utilisez le stockage sans serveur lorsque vous exécutez des tâches Apache Spark afin d'éliminer le provisionnement de disques locaux, de réduire les coûts de traitement des données et d'éviter les échecs de tâches dus à des contraintes de capacité de disque. Le stockage sans serveur gère automatiquement les opérations de shuffle, de déversement de disque et de mise en cache de disque pour vos tâches sans nécessiter de configuration de capacité et stocke les données intermédiaires gratuitement. Amazon EMR Serverless stocke les données intermédiaires dans un système de stockage sans serveur entièrement géré qui évolue automatiquement en fonction des demandes de charge de travail et permet à Spark de libérer du personnel informatique immédiatement en cas d'inactivité, réduisant ainsi les coûts de calcul.

Principaux avantages

Le stockage sans serveur pour EMR Serverless offre les avantages suivants.

  • Stockage sans configuration : le stockage sans serveur élimine le besoin de configurer le type et la taille du disque local pour chaque application ou tâche. EMR Serverless gère automatiquement les opérations de données intermédiaires sans planification des capacités.

  • Empêche les échecs de tâches grâce à une mise à l'échelle automatique : la capacité de stockage évolue automatiquement en fonction de la charge de travail, évitant ainsi les échecs de travail dus à une capacité de disque insuffisante.

  • Coûts de traitement des données réduits : le stockage sans serveur réduit les coûts de traitement grâce à deux mécanismes. Tout d'abord, le stockage intermédiaire des données est fourni gratuitement : vous ne payez que pour les ressources de calcul et de mémoire. Deuxièmement, le stockage découplé avec l'allocation dynamique des ressources de Spark permet à Spark de libérer immédiatement les travailleurs lorsqu'ils sont inactifs plutôt que de les conserver pour préserver les données intermédiaires sur les disques locaux. Cela permet une évolutivité et une intégration plus rapides par étape Spark, réduisant ainsi les coûts de calcul pour les tâches où les étapes ultérieures nécessitent moins de travailleurs que les étapes initiales.

  • Stockage crypté avec isolation au niveau de la tâche : toutes les données intermédiaires sont cryptées en transit et au repos avec une isolation stricte au niveau de la tâche.

  • Prise en charge précise du contrôle d'accès : le stockage sans serveur permet un contrôle d'accès précis grâce à l'intégration d'AWS Lake Formation.

Prise en main

Consultez les étapes suivantes pour utiliser le stockage sans serveur pour EMR Serverless dans vos flux de travail Spark.

  1. Création d'une application EMR sans serveur

    Créez une application EMR Serverless version 7.12 (ou ultérieure) avec le stockage sans serveur activé en définissant la propriété spark sur true dans la classification spark.aws.serverlessStorage.enabled spark-defaults.

    aws emr-serverless create-application \ --type "SPARK" \ --name my-application \ --release-label emr-7.12.0 \ --runtime-configuration '[{ "classification": "spark-defaults", "properties": { "spark.aws.serverlessStorage.enabled": "true" } }]' \ --region <AWS_REGION>
  2. Démarrer une tâche Spark

    Lancez l'exécution d'une tâche sur votre application. Le stockage sans serveur pour EMR Serverless gère automatiquement les opérations de données intermédiaires telles que le shuffle pour votre travail.

    aws emr-serverless start-job-run \ --application-id <application-id> \ --execution-role-arn <job-role-arn> \ --job-driver '{ "sparkSubmit": { "entryPoint": "s3://<bucket>/script.py", "sparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=10" } }'

    Vous pouvez également activer le stockage sans serveur pour EMR Serverless au niveau de la tâche, même s'il n'est pas activé au niveau de l'application. Cela lancera des nœuds de travail dotés d'un stockage sans serveur pour traiter vos tâches. Vous pouvez également désactiver le stockage sans serveur pour une tâche spécifique en définissant la même propriété Spark spark.aws.serverlessStorage.enabled sur false.

    # Turn on serverless storage for EMR serverless for a specific job aws emr-serverless start-job-run \ --application-id <application-id> \ --execution-role-arn <job-role-arn> \ --job-driver '{ "sparkSubmit": { "entryPoint": "/usr/lib/spark/examples/jars/spark-examples.jar", "entryPointArguments": ["1"], "sparkSubmitParameters": "--class org.apache.spark.examples.SparkPi --conf spark.aws.serverlessStorage.enabled": "true" } }'
    Note

    Pour continuer à utiliser le provisionnement de disque local traditionnel, omettez la spark.aws.serverlessStorage.enabled configuration ou définissez-la sur false.

Considérations et restrictions

  • Version finale : le stockage sans serveur est pris en charge sur Amazon EMR version 7.12 et versions ultérieures.

  • Limites de volume de données : chaque tâche peut lire et écrire jusqu'à 200 Go de données intermédiaires par tâche exécutée. Les tâches dépassant cette limite échoueront avec un message d'erreur indiquant que la limite de stockage sans serveur a été atteinte.

  • Délai d'exécution des tâches : le stockage sans serveur prend en charge les tâches dont le délai d'exécution peut atteindre 24 heures. Les tâches configurées pour des délais d'exécution plus longs échoueront avec un message d'erreur.

  • Capacité préinitialisée : les opérateurs de capacité préinitialisés ne prennent pas en charge le stockage sans serveur. Lorsque vous configurez la capacité préinitialisée, elle ne sera utilisée que par les tâches qui désactivent explicitement le stockage sans serveur au niveau de la tâche. Les tâches pour lesquelles le stockage sans serveur est activé fourniront toujours de nouveaux travailleurs à la demande et n'utiliseront aucune capacité préinitialisée, quelle que soit la configuration au niveau de l'application.

  • Types de charge de travail : le stockage sans serveur n'est pas pris en charge pour le streaming et les tâches interactives.

  • Configuration du serveur : le stockage sans serveur n'est pas pris en charge pour les utilisateurs utilisant 1 ou 2 v. CPUs

Soutenu Régions AWS

EMR Serverless prend en charge le stockage sans serveur dans les régions suivantes :

  • USA Est (Virginie du Nord)

  • USA Ouest (Oregon)

  • Europe (Irlande)