​Perché il mio cluster EMR è terminato?

6 minuti di lettura
0

Il mio cluster Amazon EMR è terminato in modo imprevisto.

Risoluzione

Verifica dei log di provisioning di Amazon EMR archiviati in Amazon S3

I log del cluster Amazon EMR sono archiviati in un bucket Amazon Simple Storage Service (Amazon S3) specificato all'avvio del cluster. I registri vengono archiviati all'indirizzo s3://example-log-location/example-cluster-ID/node/example-EC2-instance-ID/.

Nota: sostituisci example-log-location, example-cluster-ID ed example-EC2-instance-ID con la denominazione del tuo sistema.

Di seguito è riportato un elenco di errori comuni:

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.

Nota: i precedenti sono gli errori di terminazione più comuni. I cluster EMR potrebbero terminare a causa di errori diversi da quelli elencati. Per ulteriori informazioni, consulta Resource errors.

SHUTDOWN_STEP_FAILED (USER_ERROR)

Quando invii un processo della fase nel cluster EMR, è possibile specificare il comportamento di errore della fase nel parametro ActionOnFailure. Il cluster EMR termina se selezioni TERMINATE_CLUSTER o TERMINATE_JOB_FLOW per il parametro ActionOnFailure. Per ulteriori informazioni, consulta StepConfig.

Di seguito è riportato un esempio di messaggio di errore di 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."
}

Per evitare questo errore, utilizza l'opzione CONTINUE o CANCEL_AND_WAIT nel parametro ActionOnFailure quando invii il processo della fase.

NO_SLAVES_LEFT (SYSTEM_ERROR)

Questo errore si verifica quando:

  • La protezione dalle terminazioni è disattivata nel cluster EMR.
  • Tutti i nodi principali superano la capacità di archiviazione su disco come specificato da una soglia di utilizzo massima nella classificazione di configurazione yarn-site. La soglia di utilizzo massima predefinita è 90%.
  • L'istanza CORE è un'istanza spot e l'istanza spot è TERMINATED_BY_SPOT_DUE_TO_NO_CAPACITY.

Per informazioni sulla terminazione delle istanze spot, consulta Perché Amazon EC2 ha terminato la mia istanza Spot?

Per ulteriori informazioni sull'errore NO_SLAVE\ _LEFT, consulta Cluster terminated with NO_SLAVE_LEFT and core nodes FAILED_BY_MASTER.

Di seguito è riportato un esempio di messaggio di errore inviato da instance-controller:

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% ]

Per risolvere questo errore:

502 Bad Gateway

L'errore 502 Bad Gateway si verifica quando i sistemi interni di Amazon EMR non riescono a raggiungere il nodo primario per un periodo di tempo. Amazon EMR viene terminato se la protezione dalle terminazioni è disattivata. Verifica i log di instance-controller e dello stato dell'istanza più recenti quando il servizio instance-controller è inattivo. L'output standard di instance-controller indica che il servizio è terminato perché la memoria è insufficiente. Ciò indica che il nodo primario del cluster ha poca memoria.

Di seguito è riportato un messaggio di errore di esempio dal log dello stato dell'istanza:

# 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

Per evitare l'errore precedente, avvia un cluster EMR con un tipo di istanza superiore per sfruttare più memoria per i requisiti del cluster. Inoltre, libera spazio su disco per evitare interruzioni della memoria nei cluster di lunga durata. Per ulteriori informazioni, consulta Come posso risolvere gli errori relativi all'errore del nodo primario con l'errore "502 Bad Gateway" o "504 Gateway Time-out" in Amazon EMR?

KMS_ISSUE (USER_ERROR)

Quando si utilizza una configurazione di sicurezza Amazon EMR per crittografare un dispositivo root di Amazon EBS e i volumi di archiviazione, il ruolo deve disporre delle autorizzazioni appropriate. Se mancano le autorizzazioni necessarie, viene visualizzato l'errore KMS_ISSUE.

Di seguito è riportato un esempio di messaggio di errore di 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.

Per evitare l'errore precedente, assicurati che le configurazioni di sicurezza utilizzate per crittografare il dispositivo root e i volumi di archiviazione di Amazon EBS dispongano delle autorizzazioni necessarie. Per queste configurazioni, assicurati che il ruolo di servizio Amazon EMR (EMR_DefaultRole_V2) disponga delle autorizzazioni per utilizzare la chiave del Servizio di gestione delle chiavi AWS (AWS KMS) specificata.

Terminated with errors, The master node was terminated by user

Quando il nodo primario del cluster EMR si arresta per qualsiasi motivo, il cluster viene terminato con l'errore The master node was terminated by user.

Di seguito è riportato un esempio di messaggio di errore di 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
},

Poiché l'arresto dell'EMR primario o di tutti i nodi principali comporta la terminazione del cluster, evita di arrestare o riavviare i nodi del cluster.


AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa