Ist es möglich, Hadoop im pseudo-verteilten Betrieb ohne HDFS auszuführen?

8

Ich untersuche die Optionen für die Ausführung einer hadoop-Anwendung auf einem lokalen System.

Wie bei vielen Anwendungen sollten die ersten Releases in der Lage sein, auf einem einzigen Knoten zu laufen, solange wir alle verfügbaren CPU-Kerne verwenden können (Ja, dies bezieht sich auf diese frage ). Die derzeitige Einschränkung ist, dass wir auf unseren Produktionssystemen Java 1.5 haben und als solche an Hadoop 0.18.3 als neueste Version gebunden sind (siehe diese Frage ). Leider können wir dieses neue Feature noch nicht nutzen.

Die erste Option besteht darin, hadoop einfach im pseudo-verteilten Modus auszuführen. Im Wesentlichen: Erstellen Sie einen vollständigen Hadoop-Cluster mit allem, was auf genau einem Knoten läuft.

Der "Nachteil" dieses Formulars ist, dass es auch ein vollwertiges HDFS verwendet. Dies bedeutet, dass zur Verarbeitung der Eingangsdaten diese zunächst auf das lokal gespeicherte DFS "hochgeladen" werden müssen. Dies erfordert zusätzliche Transferzeit sowohl der Eingabe- als auch der Ausgabedaten und benötigt zusätzlichen Speicherplatz. Ich möchte beide vermeiden, während wir auf einer einzigen Knotenkonfiguration bleiben.

Also dachte ich: Ist es möglich, die Einstellung "fs.hdfs.impl" zu überschreiben und sie von "org.apache.hadoop.dfs.DistributedFileSystem" in (zum Beispiel) "org.apache.hadoop.fs" zu ändern .LocalFileSystem "?

Wenn dies funktioniert, kann der "lokale" Hadoop-Cluster (der NUR aus einem Knoten bestehen kann) vorhandene Dateien ohne zusätzliche Speicheranforderungen verwenden und kann schneller starten, da die Dateien nicht hochgeladen werden müssen. Ich würde erwarten, dass ich immer noch einen Job- und Aufgaben-Tracker hätte und vielleicht auch einen Namen, um das Ganze zu kontrollieren.

Hat das schon mal jemand versucht? Kann es funktionieren oder ist diese Idee viel zu weit von der beabsichtigten Verwendung entfernt?

Oder gibt es eine bessere Möglichkeit, den gleichen Effekt zu erzielen: Pseudo-verteilte Operation ohne HDFS?

Danke für Ihre Einsichten.

EDIT 2:

Dies ist die Konfiguration, die ich für hadoop 0.18.3 erstellt habe conf / hadoop-site.xml mit der Antwort von bajafresh4life.

%Vor%     
Niels Basjes 23.08.2010, 08:59
quelle

1 Antwort

6

Ja, das ist möglich, obwohl ich 0.19.2 verwende. Ich bin nicht sehr vertraut mit 0.18.3, aber ich bin mir ziemlich sicher, dass es keinen Unterschied machen sollte.

Stellen Sie nur sicher, dass fs.default.name auf den Standardwert gesetzt ist (was file:/// ist), und mapred.job.tracker wird so eingestellt, dass er auf den Ort verweist, an dem Ihr Jobtracker gehostet wird. Dann starte deine Daemons mit bin / start-mapred.sh. Sie müssen den Namenknoten oder die Datenknoten nicht starten. An diesem Punkt sollten Sie in der Lage sein, Ihre Map / Reduce-Jobs mit bin/hadoop jar ...

auszuführen

Wir haben diese Konfiguration verwendet, um Hadoop über einen kleinen Maschinencluster mit einer über NFS installierten NetApp-Appliance auszuführen.

    
bajafresh4life 23.08.2010, 14:10
quelle