View a markdown version of this page

Stockage des journaux - 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.

Stockage des journaux

Pour suivre l'avancement de vos tâches sur EMR Serverless et résoudre les échecs de tâches, choisissez la manière dont EMR Serverless stocke et gère les journaux des applications. Lorsque vous soumettez une tâche exécutée, spécifiez le stockage géré, Amazon S3 et Amazon CloudWatch comme options de journalisation.

Avec CloudWatch, spécifiez les types de journaux et les emplacements de journaux que vous souhaitez utiliser, ou acceptez les types et emplacements par défaut. Pour plus d'informations sur CloudWatch les journaux, reportez-vous àJournalisation pour EMR sans serveur avec Amazon CloudWatch. En ce qui concerne le stockage géré et la journalisation S3, le tableau suivant répertorie les emplacements des journaux et la disponibilité de l'interface utilisateur auxquels vous pouvez vous attendre si vous choisissez le stockage géré, les compartiments Journalisation pour EMR Serverless avec des compartiments Amazon S3 Amazon S3 ou les deux.

Option Journaux d'événements Journaux de conteneurs Interface utilisateur de l'application

Stockage géré

Stocké dans un espace de stockage géré

Stocké dans un espace de stockage géré

Pris en charge

Stockage géré et compartiment S3

Stocké aux deux endroits

Stocké dans un compartiment S3

Pris en charge

Compartiment Amazon S3

Stocké dans un compartiment S3

Stocké dans un compartiment S3

Non pris en charge 1

1 Nous vous conseillons de conserver l'option Stockage géré sélectionnée. Sinon, vous ne pouvez pas utiliser les interfaces utilisateur intégrées de l'application.

Journalisation pour EMR Serverless avec stockage géré

Par défaut, EMR Serverless stocke les journaux des applications en toute sécurité dans le stockage géré par Amazon EMR pendant 30 jours maximum.

Note

Si vous désactivez l'option par défaut, Amazon EMR ne pourra pas résoudre vos tâches à votre place. Exemple : vous ne pouvez pas accéder à Spark-UI partir de la console EMR Serverless.

Pour désactiver cette option dans EMR Studio, désélectionnez la case à cocher AWS Autoriser la conservation des journaux pendant 30 jours dans la section Paramètres supplémentaires de la page Soumettre la tâche.

Pour désactiver cette option depuis le AWS CLI, utilisez la managedPersistenceMonitoringConfiguration configuration lorsque vous soumettez une exécution de tâche.

{ "monitoringConfiguration": { "managedPersistenceMonitoringConfiguration": { "enabled": false } } }

Si votre application EMR Serverless se trouve dans un sous-réseau privé avec des points de terminaison VPC pour Amazon S3 et que vous associez une politique de point de terminaison pour contrôler l'accès, ajoutez les autorisations suivantes pour qu'EMR Serverless stocke et diffuse les journaux des applications. ResourceRemplacez-les par les AppInfo compartiments du tableau des régions disponibles dans Exemples de politiques pour les sous-réseaux privés qui accèdent à Amazon S3.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "EMRServerlessManagedLogging", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::prod.us-east-1.appinfo.src", "arn:aws:s3:::prod.us-east-1.appinfo.src/*" ], "Condition": { "StringEquals": { "aws:PrincipalServiceName": "emr-serverless.amazonaws.com", "aws:SourceVpc": "vpc-12345678" } } } ] }

En outre, utilisez la clé de aws:SourceVpc condition pour vous assurer que la demande passe par le VPC auquel le point de terminaison du VPC est attaché.

Journalisation pour EMR Serverless avec des compartiments Amazon S3

Avant que vos tâches puissent envoyer des données de journal à Amazon S3, incluez les autorisations suivantes dans la politique d'autorisations pour le rôle d'exécution des tâches. amzn-s3-demo-logging-bucketRemplacez-le par le nom de votre bucket de journalisation.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ], "Sid": "AllowS3Putobject" } ] }

Pour configurer un compartiment Amazon S3 afin de stocker les journaux provenant du AWS CLI, utilisez la s3MonitoringConfiguration configuration lorsque vous démarrez une tâche. Pour ce faire, saisissez les informations suivantes --configuration-overrides dans la configuration.

{ "monitoringConfiguration": { "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-logging-bucket/logs/" } } }

Pour les tâches par lots pour lesquelles les nouvelles tentatives ne sont pas activées, EMR Serverless envoie les journaux au chemin suivant :

'/applications/<applicationId>/jobs/<jobId>'

Les journaux du pilote Spark sont stockés dans le chemin suivant par EMR Serverless

'/applications/<applicationId>/jobs/<jobId>/SPARK_DRIVER/'

Les journaux de l'exécuteur Spark sont stockés dans le chemin suivant par EMR Serverless

'/applications/<applicationId>/jobs/<jobId>/SPARK_EXECUTOR/<EXECUTOR-ID>'

Le < EXECUTOR-ID > est un entier.

Les versions 7.1.0 et supérieures d'EMR Serverless prennent en charge les nouvelles tentatives pour les tâches de streaming et les tâches par lots. Si vous exécutez une tâche avec les nouvelles tentatives activées, EMR Serverless ajoute automatiquement un numéro de tentative au préfixe du chemin du journal, afin que vous puissiez mieux distinguer et suivre les journaux.

'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/'

Journalisation pour EMR sans serveur avec Amazon CloudWatch

Lorsque vous soumettez une tâche à une application EMR Serverless, choisissez Amazon CloudWatch comme option pour stocker les journaux de votre candidature. Cela vous permet d'utiliser des fonctionnalités d'analyse des CloudWatch CloudWatch journaux telles que Logs Insights et Live Tail. Vous pouvez également diffuser des journaux depuis CloudWatch d'autres systèmes, par exemple OpenSearch pour une analyse plus approfondie.

EMR Serverless fournit une journalisation en temps réel des journaux des pilotes. Vous pouvez accéder aux journaux en temps réel grâce à la fonctionnalité CloudWatch Live Tail ou via les commandes CloudWatch CLI Tail.

Par défaut, la CloudWatch journalisation est désactivée pour EMR Serverless. Pour l'activer, utilisez la configuration dansAWS CLI.

Note

Amazon CloudWatch publie des journaux en temps réel, ce qui implique davantage de ressources de la part des employés. Si vous optez pour une capacité de travail faible, l'impact sur la durée de votre travail peut augmenter. Si vous activez la CloudWatch journalisation, nous vous suggérons de choisir une capacité de travail supérieure. Il est également possible que la publication du journal soit ralentie si le taux de transactions par seconde (TPS) est trop faible pour. PutLogEvents La configuration de CloudWatch limitation est globale pour tous les services, y compris EMR Serverless. Pour plus d'informations, reportez-vous à la section Comment déterminer la limitation dans mes CloudWatch journaux ? sur AWS re:post.

Autorisations requises pour se connecter avec CloudWatch

Avant que vos tâches puissent envoyer des données de journal à Amazon CloudWatch, incluez les autorisations suivantes dans la politique d'autorisations pour le rôle d'exécution des tâches.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:*:123456789012:*" ], "Sid": "AllowLOGSDescribeloggroups" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:123456789012:log-group:my-log-group-name:*" ], "Sid": "AllowLOGSPutlogevents" } ] }

AWS CLI

Pour configurer Amazon CloudWatch afin qu'il stocke les journaux pour EMR Serverless à partir du AWS CLI, utilisez la cloudWatchLoggingConfiguration configuration lorsque vous démarrez une tâche. Pour ce faire, fournissez les modifications de configuration suivantes. Vous pouvez également fournir un nom de groupe de journaux, un nom de préfixe de flux de journaux, des types de journaux et un ARN de clé de cryptage.

Si vous ne spécifiez pas de valeurs facultatives, CloudWatch publiez les journaux dans un groupe de journaux par défaut/aws/emr-serverless, avec le flux de journaux par défaut/applications/applicationId/jobs/jobId/worker-type.

Les versions 7.1.0 et supérieures d'EMR Serverless prennent en charge les nouvelles tentatives pour les tâches de streaming et les tâches par lots. Si vous avez activé les nouvelles tentatives pour une tâche, EMR Serverless ajoute automatiquement un numéro de tentative au préfixe du chemin du journal, afin que vous puissiez mieux distinguer et suivre les journaux.

'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/worker-type'

Ce qui suit montre la configuration minimale requise pour activer la CloudWatch journalisation Amazon avec les paramètres par défaut pour EMR Serverless :

{ "monitoringConfiguration": { "cloudWatchLoggingConfiguration": { "enabled": true } } }

L'exemple suivant montre toutes les configurations obligatoires et facultatives qui spécifient quand vous activez la CloudWatch journalisation Amazon pour EMR Serverless. Les logTypes valeurs prises en charge sont également répertoriées dans l'exemple suivant.

{ "monitoringConfiguration": { "cloudWatchLoggingConfiguration": { "enabled": true, // Required "logGroupName": "Example_logGroup", // Optional "logStreamNamePrefix": "Example_logStream", // Optional "encryptionKeyArn": "key-arn", // Optional "logTypes": { "SPARK_DRIVER": ["stdout", "stderr"] //List of values } } } }

Par défaut, EMR Serverless publie uniquement les journaux stdout et stderr du pilote. CloudWatch Si vous souhaitez d'autres journaux, spécifiez un rôle de conteneur et les types de journaux correspondants à l'aide du logTypes champ.

La liste suivante répertorie les types de travailleurs pris en charge qui sont spécifiés pour la logTypes configuration :

Spark
  • SPARK_DRIVER : ["STDERR", "STDOUT"]

  • SPARK_EXECUTOR : ["STDERR", "STDOUT"]

Hive
  • HIVE_DRIVER : ["STDERR", "STDOUT", "HIVE_LOG", "TEZ_AM"]

  • TEZ_TASK : ["STDERR", "STDOUT", "SYSTEM_LOGS"]