​Pourquoi mon cluster EMR a-t-il été arrêté ?

Lecture de 6 minute(s)
0

Mon cluster Amazon EMR s'est arrêté de manière inattendue.

Résolution

Examiner les journaux de provisionnement d'Amazon EMR stockés dans Amazon S3

Les journaux de cluster Amazon EMR sont stockés dans un compartiment Amazon Simple Storage Service (Amazon S3) spécifié lors du lancement du cluster. Les journaux sont stockés à l'adresse s3://example-log-location/example-cluster-ID/node/example-EC2-instance-ID/.

Remarque : remplacezexample-log-location, example-cluster-ID, and example-EC2-instance-ID par le nom de votre système.

Les types d'erreurs les plus courants sont répertoriés ci-après :

SHUTDOWN_STEP_FAILED (USER_ERROR)
NO_SLAVES_LEFT (SYSTEM_ERROR)
The master failed: Error occurred: <html>??<head><title>502 Bad Gateway</title></head>??<body>??<center><h1>502 Bad Gateway</h1></center>??<hr><center>nginx/1.16.1</center>??</body>??</html>??
KMS_ISSUE (USER_ERROR)Terminated with errors, The master node was terminated by user.

Remarque : Les erreurs de terminaison les plus courantes sont décrites ci-dessus. Les clusters EMR peuvent être interrompus en raison d'erreurs autres que celles répertoriées. Pour plus d'informations, consultez Erreurs de ressource.

SHUTDOWN_STEP_FAILED (USER_ERROR)

Lorsque vous soumettez une tâche d'étape dans votre cluster EMR, vous pouvez spécifier le comportement d'échec de l'étape dans le paramètre ActionOnFailure. Le cluster EMR se termine si vous sélectionnez TERMINATE_CLUSTER ouTERMINATE_JOB_FLOW pour le paramètre ActionOnFailure. Pour plus d’informations, voir StepConfig.

Voici un exemple de message d'erreur provenant d’AWS CloudTrail :

{
  "severity": "ERROR",
  "actionOnFailure": "TERMINATE_JOB_FLOW",
  "stepId": "s-2I0GXXXXXXXX",
  "name": "Example Step",
  "clusterId": "j-2YJXXXXXXX",
  "state": "FAILED",
  "message": "Step s-2I0GXXXXXXXX (Example Step) in Amazon EMR cluster j-2YJXXXXXXX failed at 202X-1X-0X 0X:XX UTC."
}

Pour éviter cette erreur, utilisez l'option CONTINUE ou CANCEL_AND_WAIT dans le paramètre ActionOnFailure lorsque vous soumettez la tâche étape par étape.

NO_SLAVES_LEFT (SYSTEM_ERROR)

Cette erreur se produit lorsque :

  • La protection contre les résiliations est désactivée dans le cluster EMR.
  • Tous les nœuds principaux dépassent la capacité de stockage sur disque spécifiée par un seuil d'utilisation maximal dans la classification de configuration Yarn-Site. Le seuil d'utilisation maximal par défaut est de 90 %.
  • L'instance CORE est une instance Spot, et l'instance Spot est TERMINATED_BY_SPOT_DUE_TO_NO_CAPACITY.

Pour plus d'informations sur la résiliation d'une instance Spot, consultez Pourquoi Amazon EC2 a-t-il résilié mon instance Spot ?

Pour plus d'informations sur l'erreur NO_SLAVE_LEFT, voir Cluster terminé avec NO_SLAVE_LEFT et les nœuds principaux FAILED_BY_MASTER.

Voici un exemple de message d'erreur provenant du contrôleur d'instance :

202X-0X-0X 1X:5X:5X,968 INFO Poller: InstanceJointStatusMap contains X entries (DD:5 R:3):
i-0e336xxxxxxxxxxxx 25d21h R  25d21h ig-22 ip-1x-2xx-xx-1xx.local.xxx.com  I:   52s Y:U    98s c: 0 am:    0 H:R  1.1%Yarn unhealthy Reason : 1/4 local-dirs usable space is below configured utilization percentage/no more usable space [ /mnt/yarn : used space above threshold of 90.0% ] ; 1/1 log-dirs usable space is below configured utilization percentage/no more usable space [ /var/log/hadoop-yarn/containers : used space above threshold of 90.0% ]

Pour résoudre cette erreur :

502, Mauvaise passerelle

L'erreur 502 Mauvaise passerelle se produit lorsque les systèmes internes d'Amazon EMR ne peuvent pas atteindre le nœud principal pendant un certain temps. Amazon EMR est résilié si la protection contre les résiliations est désactivée. Consultez les derniers journaux du contrôleur d'instance et les journaux d'état des instances lorsque le service du contrôleur d'instance est en panne. La sortie standard du contrôleur d'instance indique que le service est arrêté, car la mémoire est insuffisante. Cela indique que la mémoire du nœud principal du cluster est insuffisante.

Voici un exemple de message d'erreur provenant du journal d'état de l'instance :

# dump instance controller stdout
tail -n 100 /emr/instance-controller/log/instance-controller.out
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00007fb46c7c8000, 12288, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 12288 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /tmp/hs_err_pid16110.log

# whats memory usage look like
free -m
              total        used        free      shared  buff/cache   available
Mem:          15661       15346         147           0         167          69
Swap:             0           0           0

Pour éviter l'erreur précédente, lancez un cluster EMR avec un type d'instance supérieur afin d'exploiter davantage de mémoire pour répondre aux besoins de votre cluster. Nettoyez également l'espace disque pour éviter les pannes de mémoire dans les clusters de longue durée. Pour plus d’informations, voir Comment résoudre une défaillance du nœud primaire associée à l'erreur « 502 Bad Gateway » ou « 504 Gateway Time-out » dans Amazon EMR ?

KMS_ISSUE (USER_ERROR)

Lorsque vous utilisez une configuration de sécurité Amazon EMR pour chiffrer un périphérique racine et des volumes de stockage Amazon EBS, le rôle doit disposer des autorisations appropriées. Si les autorisations nécessaires sont manquantes, le message d'erreur KMS_ISSUE s'affiche.

Voici un exemple de message d'erreur provenant d’AWS CloudTrail :

The EMR Service Role must have the kms:GenerateDataKey* and kms:ReEncrypt* permission for the KMS key configuration when you enabled EBS encryption by default. You can retrieve that KMS key's ID by using the ec2:GetEbsDefaultKmsKeyId API.

Pour éviter l'erreur précédente, assurez-vous que les configurations de sécurité qui sont utilisées pour chiffrer le périphérique racine et les volumes de stockage Amazon EBS disposent des autorisations nécessaires. Pour ces configurations, assurez-vous que la fonction du service Amazon EMR (EMR_DefaultRole_V2) est autorisée à utiliser la clé AWS Key Management Service (AWS KMS).

Résilié avec des erreurs, le nœud principal a été arrêté par l'utilisateur

Lorsque le nœud principal du cluster EMR s'arrête pour une raison quelconque, le cluster se termine avec l'erreur The master node was terminated by user.

Voici un exemple de message d'erreur provenant d’AWS CloudTrail :

eventTime": "2023-01-18T08:07:02Z",
    "eventSource": "ec2.amazonaws.com",
    "eventName": "StopInstances",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "52.xx.xx.xx",
    "userAgent": "AWS Internal",
    "requestParameters": {
        "instancesSet": {
            "items": [
                {
                    "instanceId": "i-xxf6c5xxxxxxxxxxx"
                }
            ]
        },
        "force": false
},

Étant donné que l'arrêt du nœud principal ou de tous les nœuds principaux de l'EMR entraîne la fermeture du cluster, évitez d'arrêter ou de redémarrer les nœuds du cluster.


AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 mois