Commencer à partir du AWS CLI - 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.

Commencer à partir du AWS CLI

Étape 1 : Création d'une application EMR sans serveur

Utilisez la emr-serverless create-applicationcommande pour créer votre première application EMR sans serveur. Vous devez spécifier le type d'application et le label de EMR version Amazon associés à la version de l'application que vous souhaitez utiliser. Le nom de l'application est facultatif.

Spark

Pour créer une application Spark, exécutez la commande suivante.

aws emr-serverless create-application \ --release-label emr-6.6.0 \ --type "SPARK" \ --name my-application
Hive

Pour créer une application Hive, exécutez la commande suivante.

aws emr-serverless create-application \ --release-label emr-6.6.0 \ --type "HIVE" \ --name my-application

Notez l'ID de l'application renvoyé dans la sortie. Vous utiliserez cet identifiant pour démarrer la candidature et lors de la soumission des offres d'emploi, appelé ensuiteapplication-id.

Avant de passer àÉtape 2 : Soumettre une tâche exécutée à votre application EMR Serverless, assurez-vous que votre application a atteint l'CREATEDétat correspondant au get-applicationAPI.

aws emr-serverless get-application \ --application-id application-id

EMRServerless crée des travailleurs pour répondre aux tâches que vous demandez. Par défaut, ils sont créés à la demande, mais vous pouvez également spécifier une capacité pré-initialisée en définissant le initialCapacity paramètre lors de la création de l'application. Vous pouvez également limiter la capacité maximale totale qu'une application peut utiliser avec le maximumCapacity paramètre. Pour en savoir plus sur ces options, consultez Configuration d'une application.

Étape 2 : Soumettre une tâche exécutée à votre application EMR Serverless

Votre application EMR Serverless est maintenant prête à exécuter des tâches.

Spark

Dans cette étape, nous utilisons un PySpark script pour calculer le nombre d'occurrences de mots uniques dans plusieurs fichiers texte. Un compartiment S3 public en lecture seule stocke à la fois le script et le jeu de données. L'application envoie le fichier de sortie et les données du journal depuis le moteur d'exécution Spark vers le compartiment S3 que vous avez créé /output et les /logs répertoires qu'il contient.

Pour exécuter une tâche Spark
  1. Utilisez la commande suivante pour copier le script d'exemple que nous allons exécuter dans votre nouveau compartiment.

    aws s3 cp s3://us-east-1.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py s3://amzn-s3-demo-bucket/scripts/
  2. Dans la commande suivante, remplacez-le par application-id l'ID de votre application. job-role-arnRemplacez-le par le rôle d'exécution ARN que vous avez créé dansCréation d'un rôle d'exécution de tâches. Substitut job-run-name avec le nom que vous souhaitez appeler votre tâche exécutée. Remplacez toutes les amzn-s3-demo-bucket chaînes par le compartiment Amazon S3 que vous avez créé et ajoutez-les /output au chemin. Cela crée un nouveau dossier dans votre compartiment dans lequel EMR Serverless peut copier les fichiers de sortie de votre application.

    aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --name job-run-name \ --job-driver '{ "sparkSubmit": { "entryPoint": "s3://amzn-s3-demo-bucket/scripts/wordcount.py", "entryPointArguments": ["s3://amzn-s3-demo-bucket/emr-serverless-spark/output"], "sparkSubmitParameters": "--conf spark.executor.cores=1 --conf spark.executor.memory=4g --conf spark.driver.cores=1 --conf spark.driver.memory=4g --conf spark.executor.instances=1" } }'
  3. Notez l'ID d'exécution de la tâche renvoyé dans la sortie. job-run-idRemplacez-le par cet ID dans les étapes suivantes.

Hive

Dans ce didacticiel, nous créons une table, insérons quelques enregistrements et exécutons une requête d'agrégation de comptes. Pour exécuter la tâche Hive, créez d'abord un fichier contenant toutes les requêtes Hive à exécuter dans le cadre d'une tâche unique, téléchargez le fichier sur S3 et spécifiez ce chemin S3 lorsque vous démarrez la tâche Hive.

Pour exécuter une tâche Hive
  1. Créez un fichier appelé hive-query.ql contenant toutes les requêtes que vous souhaitez exécuter dans votre tâche Hive.

    create database if not exists emrserverless; use emrserverless; create table if not exists test_table(id int); drop table if exists Values__Tmp__Table__1; insert into test_table values (1),(2),(2),(3),(3),(3); select id, count(id) from test_table group by id order by id desc;
  2. hive-query.qlTéléchargez-le dans votre compartiment S3 à l'aide de la commande suivante.

    aws s3 cp hive-query.ql s3://amzn-s3-demo-bucket/emr-serverless-hive/query/hive-query.ql
  3. Dans la commande suivante, remplacez-le application-id par votre propre ID d'application. job-role-arnRemplacez-le par le rôle d'exécution ARN que vous avez créé dansCréation d'un rôle d'exécution de tâches. Remplacez toutes les amzn-s3-demo-bucket chaînes par le compartiment Amazon S3 que vous avez créé, puis ajoutez /output et /logs au chemin. Cela crée de nouveaux dossiers dans votre compartiment, dans lesquels EMR Serverless peut copier les fichiers de sortie et les fichiers journaux de votre application.

    aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "hive": { "query": "s3://amzn-s3-demo-bucket/emr-serverless-hive/query/hive-query.ql", "parameters": "--hiveconf hive.log.explain.output=false" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "hive-site", "properties": { "hive.exec.scratchdir": "s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/scratch", "hive.metastore.warehouse.dir": "s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/warehouse", "hive.driver.cores": "2", "hive.driver.memory": "4g", "hive.tez.container.size": "4096", "hive.tez.cpu.vcores": "1" } }], "monitoringConfiguration": { "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-bucket/emr-serverless-hive/logs" } } }'
  4. Notez l'ID d'exécution de la tâche renvoyé dans la sortie. job-run-idRemplacez-le par cet ID dans les étapes suivantes.

Étape 3 : passez en revue le résultat de votre exécution

L'exécution de la tâche doit généralement prendre de 3 à 5 minutes.

Spark

Vous pouvez vérifier l'état de votre tâche Spark à l'aide de la commande suivante.

aws emr-serverless get-job-run \ --application-id application-id \ --job-run-id job-run-id

Lorsque la destination de votre journal est définie surs3://amzn-s3-demo-bucket/emr-serverless-spark/logs, vous pouvez trouver les journaux de cette tâche spécifique exécutée souss3://amzn-s3-demo-bucket/emr-serverless-spark/logs/applications/application-id/jobs/job-run-id.

Pour les applications Spark, EMR Serverless envoie les journaux d'événements toutes les 30 secondes vers le sparklogs dossier de destination de votre journal S3. Lorsque votre tâche est terminée, les journaux d'exécution de Spark pour le pilote et les exécuteurs sont téléchargés dans des dossiers nommés de manière appropriée par le type de travailleur, tels que driver ouexecutor. La sortie de la PySpark tâche est transférée vers. s3://amzn-s3-demo-bucket/output/

Hive

Vous pouvez vérifier l'état de votre tâche Hive à l'aide de la commande suivante.

aws emr-serverless get-job-run \ --application-id application-id \ --job-run-id job-run-id

Lorsque la destination de votre journal est définie surs3://amzn-s3-demo-bucket/emr-serverless-hive/logs, vous pouvez trouver les journaux de cette tâche spécifique exécutée souss3://amzn-s3-demo-bucket/emr-serverless-hive/logs/applications/application-id/jobs/job-run-id.

Pour les applications Hive, EMR Serverless télécharge en permanence le pilote Hive HIVE_DRIVER dans le dossier de votre destination de journal S3 et les journaux de tâches Tez TEZ_TASK dans le dossier. Une fois que le job a atteint son SUCCEEDED état, le résultat de votre requête Hive est disponible à l'emplacement Amazon S3 que vous avez spécifié dans le monitoringConfiguration champ deconfigurationOverrides.

Étape 4 : Nettoyer

Lorsque vous aurez terminé de travailler sur ce didacticiel, pensez à supprimer les ressources que vous avez créées. Nous vous recommandons de publier des ressources que vous n'avez pas l'intention de réutiliser.

Supprimer votre candidature

Pour supprimer une application, utilisez la commande suivante.

aws emr-serverless delete-application \ --application-id application-id

Supprimer votre bucket de log S3

Pour supprimer votre compartiment de journalisation et de sortie S3, utilisez la commande suivante. Remplacez amzn-s3-demo-bucket par le nom réel du compartiment S3 créé dansPréparer le stockage pour le mode EMR Serverless..

aws s3 rm s3://amzn-s3-demo-bucket --recursive aws s3api delete-bucket --bucket amzn-s3-demo-bucket

Supprimer votre rôle d'exécution des tâches

Pour supprimer le rôle d'exécution, détachez la politique du rôle. Vous pouvez ensuite supprimer à la fois le rôle et la politique.

aws iam detach-role-policy \ --role-name EMRServerlessS3RuntimeRole \ --policy-arn policy-arn

Pour supprimer le rôle, utilisez la commande suivante.

aws iam delete-role \ --role-name EMRServerlessS3RuntimeRole

Pour supprimer la politique attachée au rôle, utilisez la commande suivante.

aws iam delete-policy \ --policy-arn policy-arn

Pour d'autres exemples d'exécution de tâches Spark et Hive, reportez-vous aux sections Offres d'emploi Spark etEmplois Hive.