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

7 minutos de lectura
0

Mi clúster de Amazon EMR se terminó de forma inesperada¡.

Resolución

Revise los registros de aprovisionamiento de Amazon EMR almacenados en Amazon S3

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

Nota: Sustituya example-log-location, example-cluster-IDy example-EC2-instance-ID por el nombre de su sistema.

A continuación se muestra una lista de los errores más 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 representan los errores de terminación más comunes. Puede que los clústeres de EMR se terminen debido a otros errores distintos que no figuran en esta lista. Si desea obtener más información, consulteResource errors (Errores de recursos).

SHUTDOWN_STEP_FAILED (USER_ERROR)

Cuando envía un trabajo escalonado en su clúster de EMR, puede especificar el comportamiento para los errores escalonados en el parámetro actionOnFailure. El clúster de EMR se termina si selecciona TERMINATE_CLUSTER o TERMINATE_JOB_FLOW como parámetro en actionOnFailure. Si desea obtener más información, consulte StepConfig.

A continuación se muestra 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 que se produzca este error, emplee las opciones CONTINUE oCANCEL_AND_WAIT del parámetro actionOnFailure al enviar el trabajo escalonado.

NO_SLAVES_LEFT (SYSTEM_ERROR)

Este error se produce cuando:

  • La protección frente a la terminación está desactivada en el clúster de EMR.
  • Todos los nodos principales superan la capacidad de almacenamiento en disco, conforme al valor especificado en un umbral de utilización máximo en la clasificación de configuración de sitios YARN. El umbral máximo predeterminado para la utilización es del 90 %.
  • La instancia CORE es una instancia de spot, y la instancia de spot es TERMINATED_BY_SPOT_DUE_TO_NO_CAPACITY.

Si desea obtener información acerca de la terminación de instancias de spot, consulte Why did Amazon EC2 terminate my Spot Instance? (¿Por qué Amazon EC2 canceló mi instancia de spot?)

Si desea obtener más información acerca del error NO_SLAVE_LEFT, consulte Cluster terminated with NO_SLAVE_LEFT and core nodes FAILED_BY_MASTER (Clúster terminado con NO_SLAVE_LEFT y los nodos principales FAILED_BY_MASTER).

A continuación se muestra 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:

  • Deje ACTIVADA la protección frente a la terminación para los clústeres. Si desea obtener más información, consulte Termination protection and unhealthy YARN nodes (Protección frente a terminación y nodos YARN en mal estado).
  • Sírvase de las políticas de escalado de Amazon EMR (escalado automático y administrado) para escalar los nodos principales en función de sus requisitos. Si desea obtener más información, consulte Scaling cluster resources (Cómo escalar los recursos de los clústeres).
  • Agregue más capacidad de Amazon Elastic Block Storage (Amazon EBS) a su clúster. Si desea obtener más información, consulte How can I resolve “Exit status: -100. Diagnostics: Container released on a *lost* node” errors in Amazon EMR (¿Cómo puedo resolver los errores “Estado de salida: -100. Diagnóstico: Contenedor lanzado en un nodo *perdido*” en Amazon EMR?)
  • Defina una alarma para la métrica de Amazon CloudWatch mRunHealthyNodes. Puede configurar una notificación para que esta alarma lo avise cuando haya nodos en mal estado antes de que se agote el tiempo de espera de 45 minutos. Si desea obtener más información, consulte Create a CloudWatch alarm based on a static threshold (Crear una alarma de CloudWatch basada en un umbral estático).

502 bad gateway (502 puerta de enlace no válida)

El error 502 Bad Gateway (502 puerta de enlace no válida) se produce cuando los sistemas internos de Amazon EMR no consiguen alcanzar el nodo principal durante un determinado período. Amazon EMR se termina si la protección frente a la terminación está desactivada. Compruebe los registros más recientes del controlador de instancias y los del estado de las instancias cuando el servicio de dicho controlador esté inactivo. La salida estándar del controlador de instancias muestra que el servicio se terminó porque no hay suficiente memoria, lo que indica que al nodo principal del clúster le queda 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 que se produzca el error anterior, lance un clúster de EMR con un tipo de instancia superior para poder aprovechar más memoria en función de los requisitos del clúster. Asimismo, limpie espacio en disco para evitar que se produzcan interrupciones de memoria en los clústeres que se ejecutan durante periodos prolongados. Si desea obtener más información consulte How do I troubleshoot primary node failure with error "502 Bad Gateway" or "504 Gateway Time-out" in Amazon EMR? (¿Cómo puedo solucionar un error del nodo principal con el mensaje “502 Puerta de enlace no válida” o “504 Tiempo de espera de la puerta de enlace agotado” en Amazon EMR?)

KMS_ISSUE (USER_ERROR)

Cuando utilice 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 contar con los permisos adecuados. Si faltan los permisos necesarios, recibirá el error KMS_ISSUE.

A continuación se muestra 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 que se produzca el error anterior, asegúrese de que las configuraciones de seguridad que se emplean para cifrar el dispositivo raíz de Amazon EBS y los volúmenes de almacenamiento cuenten con los permisos necesarios. Asegúrese de que, en estas configuraciones, la función de servicio de Amazon EMR (EMR_DefaultRole_v2) cuente con permisos para utilizar la clave de AWS Key Management Service (AWS KMS) que se especificó.

Terminated with errors, The master node was terminated by user (Terminado con errores, el usuario canceló el nodo maestro)

Cuando el nodo principal del clúster de EMR se termina por cualquier razón, el clúster se termina con el error .The master node was terminated by user (El usuario canceló el nodo maestro).

A continuación se muestra 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
},

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


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 4 meses