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-application
commande 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-application
API.
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
-
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/
-
Dans la commande suivante, remplacez-le par application-id
l'ID de votre application. job-role-arn
Remplacez-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"
}
}'
-
Notez l'ID d'exécution de la tâche renvoyé dans la sortie. job-run-id
Remplacez-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
-
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;
-
hive-query.ql
Té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
-
Dans la commande suivante, remplacez-le application-id
par votre propre ID d'application. job-role-arn
Remplacez-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"
}
}
}'
-
Notez l'ID d'exécution de la tâche renvoyé dans la sortie. job-run-id
Remplacez-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.