El clúster de Amazon EMR finaliza con NO_SLAVE_LEFT y los nodos básicos con FAILED_BY_MASTER - Amazon EMR

El clúster de Amazon EMR finaliza con NO_SLAVE_LEFT y los nodos básicos con FAILED_BY_MASTER

Normalmente, esto ocurre porque la protección de terminación está deshabilitada y todos los nodos secundarios superan la capacidad de almacenamiento en disco especificada por el umbral de utilización máximo en la configuración de clasificación yarn-site, que corresponde al archivo yarn-site.xml. Este valor es el 90 % de forma predeterminada. Cuando la utilización del disco en un nodo secundario supera el umbral de utilización, el servicio de estado NodeManager de YARN informa de que el nodo se encuentra en el estado UNHEALTHY. Mientras esté en este estado, Amazon EMR lo incluye en la lista de denegados y no le asigna contenedores YARN. Si el nodo sigue en mal estado transcurridos 45 minutos, Amazon EMR marca la instancia de Amazon EC2 asociada para su terminación como FAILED_BY_MASTER. Cuando todas las instancias de Amazon EC2 asociadas con nodos principales se marcan para su terminación, el clúster termina con el estado NO_SLAVE_LEFT porque no hay recursos para ejecutar trabajos.

Sobrepasar la utilización del disco en un nodo secundario podría causar una reacción en cadena. Si un único nodo supera el umbral de utilización del disco debido a HDFS, es posible que otros nodos estén también cerca del umbral. El primer nodo supera el umbral de uso del disco, por lo que Amazon EMR lo agrega a la lista de denegados. Esto aumenta la carga de uso del disco en los nodos restantes, ya que estos comienzan a replicar entre ellos los datos HDFS que perdieron en el nodo incluido en la lista de denegados. Uno por uno, los nodos van adoptando el estado UNHEALTHY de la misma manera, y el clúster finalmente termina.

Prácticas recomendadas y recomendaciones

Configurar el hardware del clúster con almacenamiento suficiente

Al crear un clúster, asegúrese de que haya suficientes nodos secundarios y de que cada uno tenga un almacén de instancias y volúmenes de almacenamiento de EBS para HDFS apropiados. Para obtener más información, consulte Cálculo de la capacidad de HDFS requerida de un clúster. También puede añadir instancias secundarias a grupos de instancias existentes de forma manual o mediante el escalado automático. Las instancias nuevas tienen la misma configuración de almacenamiento que el resto de las instancias del grupo. Para obtener más información, consulte Utilice el escalado de clústeres de Amazon EMR para adaptarse a las cargas de trabajo cambiantes.

Cómo habilitar la protección contra la terminación

Habilite la protección de terminación. De esta forma, si un nodo principal se incluye en la lista de denegados, es posible conectarse a la instancia de Amazon EC2 asociada mediante SSH para solucionar el problema y recuperar los datos. Si habilita la protección de terminación, tenga en cuenta que Amazon EMR no sustituye la instancia de Amazon EC2 por una nueva. Para obtener más información, consulte Uso de la protección de finalización para proteger sus clústeres de Amazon EMR de un cierre accidental.

Crear una alarma para la métrica de CloudWatch MRUnhealthyNodes

Esta métrica indica el número de nodos que tienen el estado UNHEALTHY. Es equivalente a la métrica de YARN mapred.resourcemanager.NoOfUnhealthyNodes. Puede configurar una notificación para esta alarma que le avise de los nodos en mal estado 45 minutos antes de que se agote el tiempo de espera. Para obtener más información, consulte Monitorización de métricas de Amazon EMR con CloudWatch.

Retocar la configuración mediante yarn-site

Las opciones mostradas a continuación se pueden ajustar de acuerdo con los requisitos de la aplicación. Por ejemplo, es posible que desee aumentar el umbral de utilización del disco si un nodo adopta el estado UNHEALTHY aumentando el valor de yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage.

Puede establecer estos valores al crear un clúster mediante la clasificación de configuración yarn-site. Para obtener más información, consulte Configuración de aplicaciones en la Guía de publicación de Amazon EMR. También puede conectarse mediante SSH a las instancias de Amazon EC2 asociadas con los nodos principales y, a continuación, agregar los valores de /etc/hadoop/conf.empty/yarn-site.xml con un editor de texto. Después de realizar los cambios, debe reiniciar hadoop-yarn-nodemanager tal y como se muestra a continuación.

importante

Al reiniciar el servicio NodeManager, los contenedores YARN activos se cancelan a menos que yarn.nodemanager.recovery.enabled se establezca en true mediante la clasificación de configuración yarn-site al crear el clúster. Asimismo, debe especificar el directorio en el que se va a almacenar el estado del contenedor mediante la propiedad yarn.nodemanager.recovery.dir.

sudo /sbin/stop hadoop-yarn-nodemanager sudo /sbin/start hadoop-yarn-nodemanager

Para obtener más información sobre las propiedades yarn-site actuales y sus valores predeterminados, consulte página relacionada con la configuración predeterminada de YARN en la documentación de Apache Hadoop.

Propiedad Valor predeterminado Descripción

yarn.nodemanager.disk-health-checker.interval-ms

120 000

La frecuencia (en segundos) con la que se ejecuta el comprobador de estado del disco.

yarn.nodemanager.disk-health-checker.min-healthy-disks

0,25

La fracción mínima del número de discos que deben estar en buen estado para que NodeManager lance contenedores nuevos. Esto se corresponde con yarn.nodemanager.local-dirs (de forma predeterminada, /mnt/yarn en Amazon EMR) y yarn.nodemanager.log-dirs (de forma predeterminada, /var/log/hadoop-yarn/containers, que está vinculado mediante symlinks a mnt/var/log/hadoop-yarn/containers en Amazon EMR).

yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage

90,0

El porcentaje máximo de utilización del espacio en disco permitido después del cual un disco se marca como dañado. Los valores están comprendidos entre 0,0 y 100,0. Si el valor es superior o igual a 100, NodeManager comprueba si el disco está lleno. Esto se aplica a yarn-nodemanager.local-dirs y yarn.nodemanager.log-dirs.

yarn.nodemanager.disk-health-checker.min-free-space-per-disk-mb

0

El espacio mínimo que debe estar disponible en un disco para que se pueda utilizar. Esto se aplica a yarn-nodemanager.local-dirs y yarn.nodemanager.log-dirs.