Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
¿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"
El modo seguro para NameNode es un modo de solo lectura para el clúster del sistema de archivos distribuido de Hadoop (HDFS). En Safemode, no puedes realizar ninguna modificación en el sistema de archivos ni en los bloques.
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 parámetro dfs.namenode.resource.du.reserved define el espacio requerido para el directorio 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.
Comprueba la causa raíz del problema en la ubicación del registro de NameNode, /var/log/hadoop-hdfs/.
Resolución
Antes de salir de Safemode, confirma que sabes por qué el NameNode está bloqueado en Safemode. Revisa el estado de todos los registros de DataNodes y NameNode.
Importante: En algunos casos, al desactivar manualmente Safemode, es posible que se pierdan datos.
Para desactivar manualmente Safemode, ejecuta el siguiente comando:
sudo -u hdfs hadoop dfsadmin -safemode leave
Según la causa principal del error, completa uno o más de los siguientes pasos de solución de problemas para desactivar Safemode.
Cambio a un clúster con varios nodos principales
Los puntos de control no son automáticos en los clústeres con un solo nodo principal. Por lo tanto, HDFS no puede hacer copias de seguridad de los registros de edición en una nueva instantánea (FsImage) y eliminarlos automáticamente. HDFS usa registros de edición para registrar los cambios en el sistema de archivos entre instantáneas. Se recomienda eliminar manualmente los registros de edición de un clúster con un único nodo principal. Si no eliminas manualmente los registros de edición, es posible que los registros ocupen todo el espacio en disco de /mnt. Para resolver este problema, lanza un clúster con varios nodos principales. Los clústeres con varios nodos principales admiten una alta disponibilidad para el NameNode de HDFS.
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 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 todas las modificaciones del sistema de archivos y bloques. Para resolver este problema, debes eliminar los archivos innecesarios de /mnt.
Para eliminar los archivos que ya no necesitas, sigue estos pasos:
-
Comprueba los registros de NameNode para comprobar que el NameNode está en modo seguro porque no hay suficiente espacio en disco. Si el espacio en disco es suficiente, 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 104857600Si 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 confirmar que el NameNode sigue en modo seguro, ejecuta el siguiente comando:
[root@ip-###-##-##-### mnt]# hdfs dfsadmin -safemode getSafe mode is ON -
Elimina los archivos innecesarios de /mnt. Si el directorio in/mnt/namenode/current usa una gran cantidad de espacio en un clúster con un nodo principal, crea 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, vuelve a comprobar el estado de Safemode.
[hadoop@ip-###-##-##-### ~]$ hdfs dfsadmin -safemode getResultado de ejemplo:
Safe mode is ON -
Desactiva el modo seguro:
[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:
-
Navega hasta el directorio /mnt:
cd /mnt -
Determina qué carpetas ocupan más espacio en disco:
sudo du -hsx * | sort -rh | head -10 -
Comprueba las subcarpetas más grandes dentro de las carpetas que utilizan más espacio en disco. Por ejemplo, si la carpeta var usa una gran cantidad de espacio en disco, comprueba las subcarpetas más grandes de var:
cd varsudo du -hsx \* | sort -rh | head -10 -
Elimina primero los archivos más grandes. Asegúrate de eliminar solo los archivos que ya no necesites. El bucket de registro de 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.
-
Después de eliminar los archivos innecesarios, vuelve a comprobar el estado de Safemode. A continuación, desactiva Safemode:
[hadoop@ip-###-##-##-### ~]$ hdfs dfsadmin -safemode getResultado de ejemplo:
Safe mode is ON -
Desactiva el modo seguro:
[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:
La salida del ejemplo anterior muestra qué DataNode almacena el bloque. Por ejemplo, 192.168.0.2. Puedes comprobar los registros del DataNode para ver si hay algún error relacionado 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 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
Guía del usuario de HDFS (del sitio web de Apache Hadoop)
- Temas
- Analytics
- Etiquetas
- Amazon EMR
- Idioma
- Español

Contenido relevante
- preguntada hace 8 meses
- preguntada hace un año
- preguntada hace un año
OFICIAL DE AWSActualizada hace 4 años