2011-02-11 15 views
26

Tengo un clúster Hadoop con 18 nodos de datos. He reiniciado el nodo de nombre hace más de dos horas y el nodo de nombre todavía está en modo seguro.Recuperación de modo seguro de Hadoop: ¡tomar demasiado tiempo!

He estado buscando por qué esto podría tomar demasiado tiempo y no puedo encontrar una buena respuesta. La publicación aquí: Hadoop safemode recovery - taking lot of time es relevante, pero no estoy seguro de si quiero/necesidad de reiniciar el nodo del nombre después de hacer un cambio a este valor como el artículo menciona:

<property> 
<name>dfs.namenode.handler.count</name> 
<value>3</value> 
<final>true</final> 
</property> 

En cualquier caso, esta es lo que he estado recibiendo en 'Hadoop Hadoop-NameNode-hadoop-nombre-node.log':

2011-02-11 01:39:55,226 INFO org.apache.hadoop.ipc.Server: IPC Server handler 0 on 8020, call delete(/tmp/hadoop-hadoop/mapred/system, true) from 10.1.206.27:54864: error: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot delete /tmp/hadoop-hadoop/mapred/system. Name node is in safe mode. 
The reported blocks 319128 needs additional 7183 blocks to reach the threshold 0.9990 of total blocks 326638. Safe mode will be turned off automatically. 
org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot delete /tmp/hadoop-hadoop/mapred/system. Name node is in safe mode. 
The reported blocks 319128 needs additional 7183 blocks to reach the threshold 0.9990 of total blocks 326638. Safe mode will be turned off automatically. 
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.deleteInternal(FSNamesystem.java:1711) 
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.delete(FSNamesystem.java:1691) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.delete(NameNode.java:565) 
    at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:508) 
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:966) 
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:962) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:416) 
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:960) 

Cualquier consejo se agradece. Gracias!

+0

¿Cuál es su factor de replicación? –

+0

El factor de replicación es 3. ¡Y aún está en modo seguro! –

+0

K, sí, definitivamente deberías ir a un conteo mayor de manipuladores, debería estar cerca de 10. –

Respuesta

43

Lo tuve una vez, donde nunca se informaron algunos bloques. Tuve que dejar que el namenode dejara safemode (hadoop dfsadmin -safemode leave) y luego ejecutara un fsck para borrar los archivos que faltaban.

+2

Terminé teniendo que ejecutar '-safemode leave' también después de esperar varias horas. Todavía faltan bloques, así que necesitaré ejecutar fsk para borrar también los archivos que faltan. –

+0

¿Conoces alguna razón por la que hdfs no restaure las réplicas que faltan? – Denis

+0

Luego use 'hadoop fsck -delete' para limpiar los datos. – shane

Cuestiones relacionadas