Quand configurer des événements EMR dans CloudWatch - 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.

Quand configurer des événements EMR dans CloudWatch

Pour certaines API de sondage, telles que DescribeCluster DescribeStep, et ListClusters, la configuration d'un CloudWatch événement peut réduire le temps de réponse aux modifications et libérer vos quotas de service. Par exemple, si une fonction Lambda est configurée pour s'exécuter lorsque l'état d'un cluster change, par exemple lorsqu'une étape est terminée ou qu'un cluster se termine, vous pouvez utiliser ce déclencheur pour démarrer l'action suivante dans votre flux de travail au lieu d'attendre le prochain sondage. Dans le cas contraire, si vous disposez d'instances Amazon EC2 dédiées ou de fonctions Lambda qui interrogent constamment l'API EMR pour détecter les modifications, vous gaspillez non seulement des ressources de calcul, mais vous risquez également d'atteindre votre Service Quota.

Voici quelques cas dans lesquels vous pourriez bénéficier du passage à une architecture axée sur les événements.

Cas 1 : Interrogation de l'EMR à l'aide d'appels d'DescribeCluster API pour terminer les étapes

Exemple Interroger l'EMR à l'aide d'appels d' DescribeCluster API pour terminer les étapes

Un modèle courant consiste à soumettre une étape à un cluster en cours d'exécution et à interroger Amazon EMR pour connaître le statut de l'étape, généralement à l'aide des API DescribeCluster or DescribeStep . Cette tâche peut également être accomplie dans un délai minimal en se connectant à l'événement Amazon EMR Step Status Change.

Cet événement inclut les informations suivantes dans sa charge utile.

{ "version": "0", "id": "999cccaa-eaaa-0000-1111-123456789012", "detail-type": "EMR Step Status Change", "source": "aws.emr", "account": "123456789012", "time": "2016-12-16T20:53:09Z", "region": "us-east-1", "resources": [], "detail": { "severity": "ERROR", "actionOnFailure": "CONTINUE", "stepId": "s-ZYXWVUTSRQPON", "name": "CustomJAR", "clusterId": "j-123456789ABCD", "state": "FAILED", "message": "Step s-ZYXWVUTSRQPON (CustomJAR) in Amazon EMR cluster j-123456789ABCD (Development Cluster) failed at 2016-12-16 20:53 UTC." } }

Dans la carte détaillée, une fonction Lambda peut analyser « state », « StepID » ou « clusterID » pour trouver des informations pertinentes.

Cas 2 : Interrogation d'EMR sur les clusters disponibles pour exécuter des flux de travail

Exemple Interrogation d'EMR sur les clusters disponibles pour exécuter des flux de travail

Les clients qui exécutent plusieurs clusters ont pour habitude d'exécuter des flux de travail sur des clusters dès qu'ils sont disponibles. Si de nombreux clusters sont en cours d'exécution et qu'un flux de travail doit être exécuté sur un cluster en attente, une méthode peut consister à interroger l'EMR à l'aide d'appels EMR DescribeCluster ou d' ListClusters API pour connaître les clusters disponibles. Une autre façon de réduire le délai nécessaire pour savoir quand un cluster est prêt pour une étape serait de traiter l'événement de changement d'état du cluster Amazon EMR.

Cet événement inclut les informations suivantes dans sa charge utile.

{ "version": "0", "id": "999cccaa-eaaa-0000-1111-123456789012", "detail-type": "EMR Cluster State Change", "source": "aws.emr", "account": "123456789012", "time": "2016-12-16T20:43:05Z", "region": "us-east-1", "resources": [], "detail": { "severity": "INFO", "stateChangeReason": "{\"code\":\"\"}", "name": "Development Cluster", "clusterId": "j-123456789ABCD", "state": "WAITING", "message": "Amazon EMR cluster j-123456789ABCD ..." } }

Pour cet événement, une fonction Lambda peut être configurée pour envoyer immédiatement un flux de travail en attente à un cluster dès que son statut passe à WAITING.

Cas 3 : Interrogation d'EMR pour mettre fin au cluster

Exemple Interrogation d'EMR pour mettre fin au cluster

Les clients qui gèrent de nombreux clusters EMR ont souvent tendance à interroger Amazon EMR pour savoir s'il s'agit de clusters interrompus afin que les tâches ne lui soient plus envoyées. Vous pouvez implémenter ce modèle avec les appels d' ListClusters API DescribeCluster et ou en utilisant l'événement Amazon EMR Cluster State Change dans.

Lorsque le cluster prend fin, l'événement émis ressemble à l'exemple suivant.

{ "version": "0", "id": "1234abb0-f87e-1234-b7b6-000000123456", "detail-type": "EMR Cluster State Change", "source": "aws.emr", "account": "123456789012", "time": "2016-12-16T21:00:23Z", "region": "us-east-1", "resources": [], "detail": { "severity": "INFO", "stateChangeReason": "{\"code\":\"USER_REQUEST\",\"message\":\"Terminated by user request\"}", "name": "Development Cluster", "clusterId": "j-123456789ABCD", "state": "TERMINATED", "message": "Amazon EMR Cluster jj-123456789ABCD (Development Cluster) has terminated at 2016-12-16 21:00 UTC with a reason of USER_REQUEST." } }

La section « détail » de la charge utile inclut le clusterID et l'état sur lesquels il est possible d'agir.