​¿Por qué se terminó mi clúster de EMR?

6 minutos de lectura
0

Mi clúster de Amazon EMR se terminó inesperadamente.

Resolución

Revisión de los registros de aprovisionamiento de Amazon EMR almacenados en Amazon S3

Los registros de clústeres de Amazon EMR se almacenan en un bucket de Amazon Simple Storage Service (Amazon S3) que se especifica al lanzar el clúster. Los registros se almacenan en s3://example-log-location/example-clúster-ID/node/example-EC2-instance-ID/.

Nota: Sustituya example-log-location, example-clúster-IDexample-EC2-instance-ID por el nombre de su sistema.

La siguiente es una lista de errores comunes:

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: Los anteriores son los errores de terminación más comunes. Es posible que los clústeres de EMR se terminen debido a errores distintos de los que se enumeran. Para obtener más información, consulte Errores de recursos.

SHUTDOWN_STEP_FAILED (USER_ERROR)

Al enviar un trabajo escalonado en su clúster de EMR, puede especificar el comportamiento de error escalonado en el parámetro ActionOnFailure. El clúster de EMR finaliza si selecciona TERMINATE_CLUSTER o TERMINATE_JOB_FLOW para el parámetro ActionOnFailure. Para obtener más información, consulte StepConfig.

El siguiente es un ejemplo de mensaje de error de 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."
}

Para evitar este error, utilice las opciones CONTINUE o CANCEL_AND_WAIT del parámetro ActionOnFailure al enviar el trabajo escalonado.

NO_SLAVES_LEFT (SYSTEM_ERROR)

Este error se produce cuando:

  • La protección de terminación está desactivada en el clúster de EMR.
  • Todos los nodos principales superan la capacidad de almacenamiento en disco, según lo especificado en un umbral de utilización máximo en la clasificación de configuración de yarn-site. El umbral de utilización máximo predeterminado es del 90 %.
  • La instancia CORE es una instancia de spot y la instancia de spot es TERMINATED_BY_SPOT_DUE_TO_NO_CAPACITY.

Para obtener información sobre la terminación de instancias de spot, consulte ¿Por qué Amazon EC2 interrumpió mi instancia de spot?

Para obtener más información sobre el error NO_SLAVE_LEFT, consulte Clúster terminado con NO_SLAVE_LEFT y nodos principales FAILED_BY_MASTER.

El siguiente es un ejemplo de mensaje de error del controlador de instancias:

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

Para resolver este error:

502: puerta de enlace incorrecta

El error 502: puerta de enlace incorrecta se produce cuando los sistemas internos de Amazon EMR no pueden llegar al nodo principal durante un período de tiempo. Amazon EMR finaliza si la protección de terminación está desactivada. Compruebe los registros del controlador de instancias y los registros del estado de la instancia más recientes cuando el servicio del controlador de instancias esté inactivo. La salida estándar del controlador de instancias muestra que el servicio ha terminado porque no hay memoria suficiente. Esto indica que el nodo principal del clúster tiene poca memoria.

A continuación se muestra un ejemplo de mensaje de error del registro de estado de la instancia:

# 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

Para evitar el error anterior, inicie un clúster de EMR con un tipo de instancia superior para aprovechar más memoria para los requisitos del clúster. Además, limpie el espacio en disco para evitar interrupciones de memoria en los clústeres de ejecución prolongada. Para obtener más información, consulte ¿Cómo puedo solucionar un error del nodo principal con los errores «502: puerta de enlace incorrecta» o «504: se agotó el tiempo de espera de la puerta de enlace» en Amazon EMR?

KMS_ISSUE (USER_ERROR)

Al utilizar una configuración de seguridad de Amazon EMR para cifrar un dispositivo raíz de Amazon EBS y los volúmenes de almacenamiento, el rol debe tener los permisos adecuados. Si faltan los permisos necesarios, recibirá el error KMS_ISSUE.

El siguiente es un ejemplo de mensaje de error de 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.

Para evitar el error anterior, asegúrese de que las configuraciones de seguridad que se utilizan para cifrar el dispositivo raíz de Amazon EBS y los volúmenes de almacenamiento tengan los permisos necesarios. Para estas configuraciones, asegúrese de que el rol de servicio Amazon EMR (EMR_DefaultRole_V2) tenga permisos para usar la clave de AWS Key Management Service (AWS KMS) especificada.

Terminado con errores, el usuario terminó el nodo maestro

Cuando el nodo principal del clúster de EMR se detiene por cualquier motivo, el clúster termina con el error El usuario terminó el nodo maestro.

El siguiente es un ejemplo de mensaje de error de 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
},

Dado que detener el nodo principal de EMR o todos los nodos principales conduce a la terminación del clúster, evite detener o reiniciar los nodos del clúster.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año