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.
Configuration d'application par défaut pour EMR Serverless
Vous pouvez définir un ensemble commun de configurations d'exécution et de surveillance au niveau de l'application pour toutes les tâches que vous soumettez dans le cadre de la même application. Cela réduit la surcharge supplémentaire associée à la nécessité de soumettre les mêmes configurations pour chaque tâche.
Vous pouvez modifier les configurations aux moments suivants :
Les sections suivantes fournissent plus de détails et fournissent un exemple pour un contexte plus détaillé.
Déclarer des configurations au niveau de l'application
Vous pouvez spécifier les propriétés de journalisation et de configuration d'exécution au niveau de l'application pour les tâches que vous soumettez dans le cadre de l'application.
monitoringConfiguration
-
Pour spécifier les configurations du journal pour les tâches que vous soumettez avec l'application, utilisez le
monitoringConfiguration
champ. Pour plus d'informations sur la journalisation pour EMR Serverless, consultezStockage des journaux. runtimeConfiguration
-
Pour spécifier les propriétés de configuration d'exécution, par exemple
spark-defaults
, fournissez un objet de configuration dans leruntimeConfiguration
champ. Cela affecte les configurations par défaut de toutes les tâches que vous soumettez avec l'application. Pour plus d’informations, consultez Paramètre de remplacement de la configuration Hive et Paramètre de remplacement de la configuration Spark.Les classifications de configuration disponibles varient en fonction de la version EMR Serverless spécifique. Par exemple, les classifications pour Log4j personnalisées ne
spark-executor-log4j2
sont disponibles qu'avec les versions 6.8.0spark-driver-log4j2
et supérieures. Pour obtenir la liste des propriétés spécifiques à l'application, reportez-vous Propriétés de la tâche Spark aux sections et. Propriétés des tâches HiveVous pouvez également configurer les propriétés Apache Log4j2, AWS Secrets Manager pour la protection des données, et le runtime Java 17 au niveau de l'application.
Pour transmettre les secrets de Secrets Manager au niveau de l'application, associez la politique suivante aux utilisateurs et aux rôles qui doivent créer ou mettre à jour des applications EMR sans serveur avec des secrets.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "
SecretsManagerPolicy
", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "kms:Decrypt" ], "Resource": "arn:aws:secretsmanager:your-secret-arn
" } ] }Pour plus d'informations sur la création de politiques personnalisées pour les secrets, consultez les exemples de politiques d'autorisation AWS Secrets Manager dans le guide de AWS Secrets Manager l'utilisateur.
Note
La runtimeConfiguration
valeur que vous spécifiez au niveau de l'application applicationConfiguration
correspond à StartJobRun
API.
Exemple de déclaration
L'exemple suivant montre comment déclarer des configurations par défaut aveccreate-application
.
aws emr-serverless create-application \ --release-label
release-version
\ --type SPARK \ --namemy-application-name
\ --runtime-configuration '[ { "classification": "spark-defaults", "properties": { "spark.driver.cores": "4", "spark.executor.cores": "2", "spark.driver.memory": "8G", "spark.executor.memory": "8G", "spark.executor.instances": "2", "spark.hadoop.javax.jdo.option.ConnectionDriverName":"org.mariadb.jdbc.Driver", "spark.hadoop.javax.jdo.option.ConnectionURL":"jdbc:mysql://db-host
:db-port
/db-name
", "spark.hadoop.javax.jdo.option.ConnectionUserName":"connection-user-name
", "spark.hadoop.javax.jdo.option.ConnectionPassword": "EMR.secret@SecretID
" } }, { "classification": "spark-driver-log4j2", "properties": { "rootLogger.level":"error", "logger.IdentifierForClass.name": "classpathForSettingLogger
", "logger.IdentifierForClass.level": "info" } } ]' \ --monitoring-configuration '{ "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-logging-bucket
/logs/app-level" }, "managedPersistenceMonitoringConfiguration": { "enabled": false } }'
Remplacer les configurations lors de l'exécution d'une tâche
Vous pouvez définir des remplacements de configuration pour la configuration de l'application et la configuration de surveillance à l'aide du StartJobRun
API. EMRServerless fusionne ensuite les configurations que vous spécifiez au niveau de l'application et au niveau du travail afin de déterminer les configurations pour l'exécution du travail.
Le niveau de granularité lors de la fusion est le suivant :
-
ApplicationConfiguration
- Type de classification, par exemplespark-defaults
. -
MonitoringConfiguration
- Type de configuration, par exemples3MonitoringConfiguration
.
Note
La priorité des configurations que vous fournissez StartJobRun
remplace les configurations que vous fournissez au niveau de l'application.
Pour plus d'informations sur les classements prioritaires, voir Paramètre de remplacement de la configuration Hive etParamètre de remplacement de la configuration Spark.
Lorsque vous démarrez une tâche, si vous ne spécifiez pas de configuration particulière, elle est héritée de l'application. Si vous déclarez les configurations au niveau de la tâche, vous pouvez effectuer les opérations suivantes :
-
Remplacer une configuration existante : fournissez le même paramètre de configuration dans la
StartJobRun
demande avec vos valeurs de remplacement. -
Ajouter une configuration supplémentaire : ajoutez le nouveau paramètre de configuration dans la
StartJobRun
demande avec les valeurs que vous souhaitez spécifier. -
Supprimer une configuration existante : pour supprimer une configuration d'exécution d'application, fournissez la clé de la configuration que vous souhaitez supprimer et transmettez une déclaration vide
{}
pour la configuration. Nous ne recommandons pas de supprimer les classifications contenant les paramètres nécessaires à l'exécution d'une tâche. Par exemple, si vous essayez de supprimer les propriétés requises pour une tâche Hive, la tâche échouera.Pour supprimer une configuration de surveillance des applications, utilisez la méthode appropriée pour le type de configuration concerné :
-
cloudWatchLoggingConfiguration
- Pour le supprimercloudWatchLogging
, transmettez le drapeau activé en tant quefalse
. -
managedPersistenceMonitoringConfiguration
- Pour supprimer les paramètres de persistance gérés et revenir à l'état activé par défaut, transmettez une déclaration vide{}
pour la configuration. -
s3MonitoringConfiguration
- Pour supprimers3MonitoringConfiguration
, transmettez une déclaration vide{}
pour la configuration.
-
Exemple de dérogation
L'exemple suivant montre les différentes opérations que vous pouvez effectuer lors de la soumission d'une tâche surstart-job-run
.
aws emr-serverless start-job-run \ --application-id
your-application-id
\ --execution-role-arnyour-job-role-arn
\ --job-driver '{ "sparkSubmit": { "entryPoint": "s3://us-east-1
.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py", "entryPointArguments": ["s3://amzn-s3-demo-destination-bucket1
/wordcount_output"] } }' \ --configuration-overrides '{ "applicationConfiguration": [ { // Override existing configuration for spark-defaults in the application "classification": "spark-defaults", "properties": { "spark.driver.cores": "2", "spark.executor.cores": "1", "spark.driver.memory": "4G", "spark.executor.memory": "4G" } }, { // Add configuration for spark-executor-log4j2 "classification": "spark-executor-log4j2", "properties": { "rootLogger.level": "error", "logger.IdentifierForClass.name": "classpathForSettingLogger
", "logger.IdentifierForClass.level": "info" } }, { // Remove existing configuration for spark-driver-log4j2 from the application "classification": "spark-driver-log4j2", "properties": {} } ], "monitoringConfiguration": { "managedPersistenceMonitoringConfiguration": { // Override existing configuration for managed persistence "enabled": true }, "s3MonitoringConfiguration": { // Remove configuration of S3 monitoring }, "cloudWatchLoggingConfiguration": { // Add configuration for CloudWatch logging "enabled": true } } }'
Au moment de l'exécution de la tâche, les classifications et configurations suivantes s'appliqueront en fonction du classement de priorité décrit dans Paramètre de remplacement de la configuration Hive etParamètre de remplacement de la configuration Spark.
-
La classification
spark-defaults
sera mise à jour avec les propriétés spécifiées au niveau du poste. Seules les propriétés inclusesStartJobRun
seraient prises en compte pour cette classification. -
La classification
spark-executor-log4j2
sera ajoutée à la liste de classifications existante. -
La classification
spark-driver-log4j2
sera supprimée. -
Les configurations pour
managedPersistenceMonitoringConfiguration
seront mises à jour avec les configurations au niveau du travail. -
Les configurations pour
s3MonitoringConfiguration
seront supprimées. -
Les configurations pour
cloudWatchLoggingConfiguration
seront ajoutées aux configurations de surveillance existantes.