2012-10-05 6 views
5

Standardmäßig legt Hadoop hadoop.tmp.dir im Ordner/tmp ab. Dies ist ein Problem, weil/tmp wird von Linux weggewischt, wenn Sie neu starten, von dem Jobtracker zu diesem schönen Fehler führen:Wenn Hadoop im pseudo-verteilten Modus ausgeführt wird, welches Verzeichnis sollte ich für hadoop.tmp.dir verwenden?

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)  

Der einzige Weg, die ich gefunden habe, um dieses Problem beheben ist Ihren Name Knoten neu zu formatieren, der den Ordner/tmp/hadoop-root neu erstellt, der beim Neustart natürlich wieder gelöscht wird.

Also ging ich voran und erstellte einen Ordner namens/hadoop_temp und gab allen Benutzern Lese-/Schreibzugriff darauf. Ich habe dann diese Eigenschaft in meinem Kern-site.xml:

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

Wenn ich meine NameNode erneut formatiert, Hadoop schien glücklich, mir diese Botschaft geben:

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

Allerdings, wenn ich sah/hadoop_temp, mir ist aufgefallen, dass der Ordner leer ist. Und dann, wenn ich Hadoop neu gestartet und überprüfte meine Jobtracker log, sah ich dies:

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 

Und wenn ich meine NameNode Protokoll überprüft, ich sah dies:

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. 

Also, klar habe ich nicht konfigurieren etwas richtiges. Hadoop erwartet immer noch, seine Dateien im Ordner/tmp zu sehen, obwohl ich in core-site.xml hadoop.tmp.dir auf/hadoop_temp eingestellt habe. Was habe ich falsch gemacht? Was ist der akzeptierte "richtige" Wert für hadoop.tmp.dir?

Bonusfrage: Was sollte ich für hbase.tmp.dir verwenden?

Systeminfo:

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

Vielen Dank für einen Blick!

Antwort

3

Vielen Dank an Harsh auf der Hadoop-Mailingliste, die mir dabei geholfen hat. Um ihn zu zitieren:

"Verwenden Sie auf 0,20.x oder 1.x basierten Versionen kein file: /// Präfix für hadoop.tmp.dir."

Ich nahm die Datei: // Präfix, und es hat funktioniert.

0

mit Hbase auch 0,94 * Sie müssen angeben

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

Verwandte Themen