¿Por qué el nodo principal de mi clúster de Amazon EMR se está quedando sin espacio de disco?

6 minutos de lectura
0

Estoy ejecutando tareas de Apache Spark en un clúster de Amazon EMR y en el nodo principal casi no queda espacio de disco.

Solución

Determinación de los nodos principales que están en mal estado

Se considera que los nodos que tienen adjunto al menos un volumen de Amazon Elastic Block Store (Amazon EBS) están en mal estado cuando utilizan más del 90 % del disco. Para determinar qué nodos podrían estar utilizando el 90 % del disco, siga estos pasos:

1.    Consulte la métrica de Amazon CloudWatch MRUnhealthyNodes. Esta métrica indica la cantidad de nodos en mal estado de un clúster de EMR.

Nota: Puede crear una alarma de CloudWatch para monitorear la métrica MRUnhealthyNodes.

2.    Conéctese al nodo principal y acceda al registro del controlador de instancias en /emr/instance-controller/log/instance-controller.log. En el registro del controlador de instancias, busque InstanceJointStatusMap para identificar los nodos en mal estado.

Para obtener más información, consulte Utilización alta del disco en ¿Cómo puedo solucionar los errores «Se ha perdido el elemento secundario» de ExecutorLostFailure en Spark en Amazon EMR?

3.    Inicie sesión en los nodos principales y, a continuación, ejecute el siguiente comando para determinar si un montaje tiene una utilización alta:

df -h

Eliminación de los archivos locales y temporales de la aplicación Spark innecesarios

Cuando se ejecutan tareas de Spark, las aplicaciones de Spark crean archivos locales que consumen el resto del espacio de disco en el nodo principal. Si el comando df -h indica que /mnt, por ejemplo, utiliza más del 90 % del espacio de disco, compruebe qué directorios o archivos tienen una utilización alta.

Ejecute el siguiente comando en el nodo principal para ver los 10 directorios principales que utilizan más espacio de disco:

cd /mnt
sudo du -hsx * | sort -rh | head -10

Si el directorio /mnt/hdfs tiene una utilización alta, compruebe el uso de HDFS y elimine los archivos innecesarios, por ejemplo, archivos de registro. Reducir el período de retención ayuda a depurar automáticamente los archivos de registro de HDFS.

hdfs dfsadmin -report
hadoop fs -du -s -h /path/to/dir

Reducción del período de retención de los registros de contenedores de YARN y eventos de Spark

Un motivo habitual por el que se usa HDFS es el directorio /var/log. En el directorio /var/log se almacenan archivos de registro, por ejemplo, de eventos de Spark y contenedores de YARN. Puede cambiar el período de retención de estos archivos para ahorrar espacio.

El siguiente comando de ejemplo muestra el uso de /var/log/spark.

Nota: /var/log/spark es el directorio predeterminado para los registros de eventos de Spark.

hadoop fs -du -s -h /var/log/spark

Reducción del período de retención predeterminado para archivos del historial de tareas de Spark

La ubicación de los archivos del historial de tareas de Spark se encuentran en /var/log/spark/apps por defecto. Cuando se ejecuta el depurador del historial del sistema de archivos, Spark borra los archivos del historial de tareas con más de siete días de antigüedad. Para reducir el período de retención predeterminado, siga estos pasos:

En un clúster en ejecución:

1.    Conéctese al nodo principal mediante SSH.

2.    Añada o actualice los siguientes valores en /etc/spark/conf/spark-defaults.conf. La siguiente configuración ejecuta el depurador cada 12 horas. La configuración elimina los archivos con más de 1 día de antigüedad. Puede personalizar este período de tiempo según su caso de uso individual enspark.history.fs.cleaner.internval y spark.history.fs.cleaner.maxAge en los parámetros.

------
spark.history.fs.cleaner.enabled true
spark.history.fs.cleaner.interval 12h
spark.history.fs.cleaner.maxAge 1d
------

3.    Reinicie el servidor del historial de Spark.

Durante el inicio del clúster:

Utilice la siguiente configuración. Puede personalizar el período de tiempo según su caso de uso individual en spark.history.fs.cleaner.internval y spark.history.fs.cleaner.maxAgeen en los parámetros.

{
"Classification": "spark-defaults",
"Properties": {
"spark.history.fs.cleaner.enabled":"true",
"spark.history.fs.cleaner.interval":"12h",
"spark.history.fs.cleaner.maxAge":"1d"
   }
}

Para obtener más información sobre estos parámetros, consulte Monitoreo e Instrumentación en la documentación de Spark.

Reducción del período de retención predeterminado de los registros de contenedores de YARN

Los registros de aplicaciones de Spark, que son los registros de contenedores de YARN correspondientes a sus tareas de Spark, se encuentran **/var/log/hadoop-yarn/apps ** .en el nodo principal. Spark mueve estos registros a HDFS cuando la aplicación termina de ejecutarse. De forma predeterminada, YARN conserva los registros de aplicaciones en HDFS durante 48 horas. Para reducir el período de retención:

1.    Conéctese al nodo primario, principal o de la tarea mediante SSH.

2.    Abra el archivo /etc/hadoop/conf/yarn-site.xml en cada nodo en su clúster de Amazon EMR (nodo primario, principal y de la tarea).

3.    Reduzca el valor de la propiedad yarn.log-aggregation.retain-seconds en todos los nodos.

4.    Reinicie el ResourceManager daemon. Para obtener más información, consulte Visualización y reinicio de los procesos de aplicaciones y de Amazon EMR.

También puede reconfigurar el clúster para reducir el período de retención. Para obtener más información, consulte Reconfiguración de un grupo de instancias en un clúster en ejecución.

Reducción del uso de /mnt/yarn

Si la utilización del directorio /mnt/yarn es alta, ajuste la retención de la caché de usuario o escale los volúmenes de EBS en el nodo. Para obtener más información, consulte ¿Cómo puedo evitar que la caché de usuario de una tarea de Spark o Hadoop consuma demasiado espacio de disco en Amazon EMR?

Ajuste del tamaño del clúster o escalado de Amazon EMR

Añada más nodos principales para mitigar los problemas de espacio de HDFS. Además, añada algún nodo principal o de tarea si se empiezan a llenar otros directorios que no sean de HDFS. Para obtener más información, consulte Escalado de los recursos de clúster.

También puede ampliar los volúmenes de EBS en los nodos existentes o utilizar un script de escalado dinámico. Para obtener más información, consulte:


Información relacionada

Configuración del hardware y las redes de clúster

Configuración de HDFS

Trabajar con sistemas de archivos y almacenamiento

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año