2012-10-05 95 views
5

De forma predeterminada, Hadoop establece hadoop.tmp.dir en su carpeta/tmp. Este es un problema, porque/tmp se aniquilado por Linux cuando se reinicie, lo que lleva a esta hermosa error de la JobTracker:Al ejecutar Hadoop en modo pseudo-distribuido, ¿qué directorio debo usar para hadoop.tmp.dir?

2012-10-05 07:41:13,618 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: localhost/127.0.0.1:8020. Already tried 0 time(s).  
...  
2012-10-05 07:41:22,636 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: localhost/127.0.0.1:8020. Already tried 9 time(s). 
2012-10-05 07:41:22,643 INFO org.apache.hadoop.mapred.JobTracker: problem cleaning system directory: null 
java.net.ConnectException: Call to localhost/127.0.0.1:8020 failed on connection exception: java.net.ConnectException: Connection refused 
    at org.apache.hadoop.ipc.Client.wrapException(Client.java:767)  

La única manera que he encontrado para solucionar este problema es volver a formatear el nodo del nombre, que reconstruye la carpeta/tmp/hadoop-root, que por supuesto se elimina de nuevo cuando se reinicia.

Así que fui adelante y creé una carpeta llamada/hadoop_temp y le dí a todos los usuarios acceso de lectura/escritura. entonces establecer esta propiedad en mi núcleo site.xml:

<property> 
      <name>hadoop.tmp.dir</name> 
      <value>file:///hadoop_temp</value> 
</property> 

Cuando me re-formateado mi NameNode, Hadoop parecía feliz, y me da este mensaje:

12/10/05 07:58:54 INFO common.Storage: Storage directory file:/hadoop_temp/dfs/name has been successfully formatted. 

Sin embargo, cuando miré/hadoop_temp, noté que la carpeta estaba vacía. Y luego, cuando me reinicia Hadoop y comprobado mi registro JobTracker, vi esto:

2012-10-05 08:02:41,988 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: localhost/127.0.0.1:8020. Already tried 0 time(s). 
... 
2012-10-05 08:02:51,010 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: localhost/127.0.0.1:8020. Already tried 9 time(s). 
2012-10-05 08:02:51,011 INFO org.apache.hadoop.mapred.JobTracker: problem cleaning system directory: null 
java.net.ConnectException: Call to localhost/127.0.0.1:8020 failed on connection exception: java.net.ConnectException: Connection refused 

y cuando me registré mi registro NameNode, vi esto:

2012-10-05 08:00:31,206 INFO org.apache.hadoop.hdfs.server.common.Storage: Storage directory /opt/hadoop/hadoop-0.20.2/file:/hadoop_temp/dfs/name does not exist. 
2012-10-05 08:00:31,212 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed. 
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /opt/hadoop/hadoop-0.20.2/file:/hadoop_temp/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible. 

Por lo tanto, es evidente que no ha configurado algo correcto. Hadoop todavía espera ver sus archivos en la carpeta/tmp, aunque configuré hadoop.tmp.dir en/hadoop_temp en core-site.xml. ¿Qué hice mal? ¿Cuál es el valor "correcto" aceptado para hadoop.tmp.dir?

Pregunta adicional: ¿Qué debo usar para hbase.tmp.dir? información

Sistema:

Ubuntu 12.04, Apache Hadoop .20.2, Apache HBase .92.1

Gracias por echar un vistazo!

Respuesta

3

Gracias a la lista de correo de Harsh on the Hadoop por ayudarme con esto. Para citarlo:

"En lanzamientos basados ​​en 0.20.xo 1.x, no use un archivo: /// prefijo para hadoop.tmp.dir".

Saqué el prefijo file: // y funcionó.

0

También con hbase 0,94 * tendrá que especificar

<property> <name>hbase.cluster.distributed</name> <value>true</value> </property>

Cuestiones relacionadas