¿Cómo desactivo Safemode para el servicio NameNode en mi clúster de Amazon EMR?
El servicio NameNode pasa a Safemode cuando intento ejecutar un trabajo de Apache Hadoop o Apache Spark en un clúster de Amazon EMR. He desactivado Safemode, pero se vuelve a activar inmediatamente.
Descripción corta
Al ejecutar un trabajo de Apache Hadoop o Apache Spark en un clúster de Amazon EMR, es posible que recibas uno de los siguientes mensajes de error:
- "Cannot create file/user/test.txt._COPYING_. Name node is in safe mode."
- "org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot delete /user/hadoop/.sparkStaging/application_15########_0001. Name node is in safe mode. It was turned on manually. Use "hdfs dfsadmin -safemode leave" to turn safe mode off. NamenodeHostName:ip-###-##-##-##.ec2.internal"
Después de que los DataNodes informen de que la mayoría de los bloques del sistema de archivos están disponibles, el NameNode sale automáticamente de Safemode. Sin embargo, el NameNode puede volver a entrar en modo seguro por los siguientes motivos:
- El espacio disponible es inferior a la cantidad de espacio requerida para el directorio de almacenamiento de NameNode.
- El NameNode no puede cargar FsImage ni EditLog en la memoria.
- El NameNode no recibió el informe de bloqueo del DataNode.
- Es posible que algunos nodos del clúster estén inactivos y los bloques de los nodos dejen de estar disponibles.
- Es posible que algunos bloques estén dañados.
Resolución
Importante: En algunos casos, es posible que se pierdan datos al desactivar manualmente Safemode.
Para desactivar manualmente Safemode, ejecuta el siguiente comando:
sudo -u hdfs hadoop dfsadmin -safemode leave
Si Safemode se vuelve a activar automáticamente, comprueba el registro de NameNode en /var/log/hadoop-hdfs/ para determinar la causa raíz. Después de determinar la causa, sigue los siguientes pasos de solución de problemas para resolver el problema.
Cambio a un clúster con varios nodos maestros
El proceso de punto de control no es automático en los clústeres con un solo nodo maestro. Por lo tanto, el Sistema de archivos distribuidos de Hadoop (HDFS) no puede hacer copias de seguridad de los registros de edición en una nueva instantánea (FSImage) ni eliminarlos automáticamente. Si el clúster solo tiene un nodo maestro, es posible que los registros de edición ocupen todo el espacio en disco de /mnt. Para resolver este problema, inicia un clúster con varios nodos maestros. Los clústeres con varios nodos maestros admiten una alta disponibilidad para el HDFS NameNode.
Eliminación de archivos innecesarios de /mnt
El parámetro dfs.namenode.resource.du.reserved especifica el espacio mínimo disponible en disco para /mnt. Cuando la cantidad de espacio en disco disponible para /mnt cae a un valor inferior al valor establecido en dfs.namenode.resource.du.reserved, NameNode pasa a Safemode. El valor predeterminado para dfs.namenode.resource.du.reserved es de 100 MB. Cuando Safemode está activado, NameNode bloquea todos los sistemas de archivos y las modificaciones. Para resolver este problema, debes eliminar los archivos innecesarios de /mnt.
Si hay suficiente espacio en disco, los registros tienen un aspecto similar al del siguiente ejemplo:
2020-08-28 19:14:43,540 WARN org.apache.hadoop.hdfs.server.namenode.NameNodeResourceChecker (org.apache.hadoop.hdfs.server.namenode.FSNamesystem$NameNodeResourceMonitor@5baaae4c): Space available on volume '/dev/xvdb2' is 76546048, which is below the configured reserved amount 104857600
Si el espacio en disco no es suficiente, los registros tienen un aspecto similar al del siguiente ejemplo:
2020-09-28 19:14:43,540 WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem (org.apache.hadoop.hdfs.server.namenode.FSNamesystem$NameNodeResourceMonitor@5baaae4c): NameNode low on available disk space. Already in safe mode.
Para eliminar archivos innecesarios, sigue estos pasos:
-
Para confirmar que el NameNode sigue en Safemode, ejecuta el siguiente comando:
[root@ip-###-##-##-### mnt]# hdfs dfsadmin -safemode getSafe mode is ON -
Elimina los archivos innecesarios de /mnt.
Nota: Si el directorio in/mnt/namenode/current ocupa una gran cantidad de espacio en un clúster con un nodo maestro, crea primero una nueva instantánea (FsImage). A continuación, elimina los registros de edición antiguos. -
Comprueba la cantidad de espacio de disco disponible en /mnt. Si el espacio disponible supera los 100 MB, ejecuta el siguiente comando para volver a comprobar el estado de Safemode:
[hadoop@ip-###-##-##-### ~]$ hdfs dfsadmin -safemode getResultado de ejemplo:
Safe mode is ON -
Ejecuta el siguiente comando para desactivar Safemode:
[hadoop@ip-###-##-##-### ~]$ hdfs dfsadmin -safemode leaveResultado de ejemplo:
Safe mode is OFF
Si /mnt aún tiene menos de 100 MB de espacio disponible, lleva a cabo una o más de las siguientes acciones:
- Elimina más archivos.
- Aumenta el tamaño del volumen de /mnt.
Eliminación de archivos adicionales
Sigue estos pasos:
-
Ejecuta el siguiente comando para navegar al directorio /mnt:
cd /mnt -
Ejecuta el siguiente comando para determinar las carpetas que ocupan más espacio en disco:
sudo du -hsx * | sort -rh | head -10 -
Ejecuta el siguiente comando para comprobar las subcarpetas más grandes dentro de las carpetas que utilizan más espacio en disco:
cd /var sudo du -hsx * | sort -rh | head -10Nota: El comando anterior comprueba las subcarpetas más grandes de la carpeta var. Para comprobar otra carpeta, sustituye var por la carpeta que deseas comprobar.
-
Elimina primero los archivos más grandes. Asegúrate de eliminar solo los archivos que ya no necesites. El bucket de registro de Amazon Simple Storage Service (Amazon S3) ya almacena copias de seguridad de los archivos de registro comprimidos de /mnt/var/log/hadoop-hdfs/ y /mnt/var/log/hadoop-yarn/. Puedes eliminar estos archivos de registro de forma segura.
-
Tras eliminar los archivos innecesarios, ejecuta el siguiente comando para volver a comprobar el estado de Safemode:
[hadoop@ip-###-##-##-### ~]$ hdfs dfsadmin -safemode getResultado de ejemplo:
Safe mode is ON -
Ejecuta el siguiente comando para desactivar Safemode:
[hadoop@ip-###-##-##-### ~]$ hdfs dfsadmin -safemode leaveResultado de ejemplo:
Safe mode is OFF
Comprueba si hay bloques y archivos dañados o que faltan
Sigue estos pasos:
- Para comprobar el estado del clúster, ejecuta el siguiente comando:
Nota: El informe de salida también te proporciona un porcentaje de bloques subreplicados y un recuento de réplicas que faltan.hdfs fsck / - Para localizar el DataNode para cada bloque del archivo, ejecuta el siguiente comando para cada archivo de la lista:
Nota: Sustituye example_file_name por tu nombre de archivo.hdfs fsck example_file_name -locations -blocks -files
Resultado de ejemplo:
El resultado del ejemplo anterior muestra que el DataNode 192.168.0.2 almacena el bloque. Puedes consultar los registros del DataNode para ver si hay errores relacionados con el ID de bloque específico (blk_##).0. BP-762523015-192.168.0.2-1480061879099:blk_1073741830_1006 len=134217728 MISSING! 1. BP-762523015-192.168.0.2-1480061879099:blk_1073741831_1007 len=134217728 MISSING! 2. BP-762523015-192.168.0.2-1480061879099:blk_1073741832_1008 len=70846464 MISSING!
Nota: La falta de bloques se produce con frecuencia porque los nodos terminan inesperadamente. - Para eliminar los archivos dañados, sal de Safemode y, a continuación, ejecuta el siguiente comando:
Nota: Sustituye example_file_name por tu nombre de archivo.hdfs dfs -rm example_file_name
Uso de las métricas de CloudWatch para supervisar el estado de HDFS
Utiliza las siguientes métricas de Amazon CloudWatch para identificar por qué el NameNode entra en Safemode:
- Para identificar el porcentaje de almacenamiento HDFS que se utiliza, consulta HDFSUtilization.
- Para identificar el número de bloques en los que HDFS no tiene réplicas, consulta MissingBlocks. Es posible que se trate de bloques dañados.
- Para identificar la cantidad de bloques que necesitan replicación, consulta UnderReplicatedBlocks.
Información relacionada
HDFS users guide (Guía del usuario de HDFS) en el sitio web de Apache Hadoop
- Temas
- Analytics
- Etiquetas
- Amazon EMR
- Idioma
- Español

Contenido relevante
preguntada hace un año
preguntada hace 2 años
preguntada hace 2 años