Was ist der HDFS-Standort auf Hadoop?
Ich versuche, führen Sie das Beispiel WordCount in Hadoop nachdem einige online-tutorials. Aber was ist mir nicht klar, wo sich die Datei, kopiert aus unserem lokalen Dateisystem, HDFS, wenn wir den folgenden Befehl ausführen.
hadoop fs -copyFromLocal /host/tut/python-tutorial.pdf /usr/local/myhadoop-tmp/
Wenn ich ausgeführt Sie den folgenden Befehl, ich sehe nicht ein, meine python-tutorial.pdf-gelistet hier auf HDFS.
hadoop fs -ls
Dies ist verwirrend mich. Ich habe bereits angegeben "myhadoop-tmp" - Verzeichnis in core-site.xml. Ich dachte, dieses Verzeichnis zu HDFS-Verzeichnis zum speichern der Eingabe-Dateien.
core-site.xml
=============
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/myhadoop-tmp</value>
<description>A base for other temporary directories.</description>
</property>
Wenn dies nicht der Fall ist, wo ist der HDFS-befindet sich auf meinem Rechner ? Was die Konfiguration bestimmt die HDFS-Verzeichnis und wo bleibt der input-Datei gehen, wenn wir kopieren Sie aus dem lokalen Dateisystem HDFS ?
- Haben Sie versucht, die
hadoop fs -ls /usr/local/myhadoop-tmp/
? - Cool. Das funktionierte für mich. Ich sehe meine Datei jetzt. Vielen Dank für die Anleitung.
- Gut, meine Antwort beantwortet deine Frage, so sollten Sie es akzeptieren.
- Ich versuche, klicken Sie auf die "Akzeptieren" der Antwort-link, sondern ein kleines popup erscheint, und es sagt, dass "Sie können nicht akzeptieren, eine Antwort in 2 Minuten". Ich weiß nicht, was das bedeutet.
- Nur versuchen Sie es erneut in ein paar Minuten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist festgelegt in der
dfs.datanode.data.dir
- Eigenschaft, die standardmäßig auffile://${hadoop.tmp.dir}/dfs/data
(siehe details hier).Jedoch in Ihrem Fall, das problem ist, dass Sie nicht den vollständigen Pfad innerhalb HDFS. Stattdessen tun:
Beachten Sie, dass Sie auch zu sein scheinen, verwirren Sie den Pfad aus, in HDFS auf den Pfad im lokalen Dateisystem. Innerhalb von HDFS ist Ihre Datei in
/usr/local/myhadoop-tmp/
. In Ihrem lokalen system (und angesichts Ihrer Konfigurations-Einstellung), ist es unter/usr/local/myhadoop-tmp/dfs/data/
; dort gibt es eine Verzeichnisstruktur und Namenskonvention definiert durch HDFS, welches unabhängig, um welchen Weg auch immer in HDFS Sie entscheiden, zu verwenden. Auch, es wird nicht den gleichen Namen haben, da es in Blöcke aufgeteilt und jeder block erhält eine eindeutige ID, der name der block ist so etwas wieblk_1073741826
.Zu dem Schluss: der lokale Pfad verwendet, der datanode ist NICHT das gleiche wie die Pfade, die Sie in HDFS. Sie gehen kann in Ihrem lokalen Verzeichnis nach Dateien suchen, aber Sie sollten dies nicht tun, da Sie durcheinanderbringen könnte die HDFS-Metadaten-management. Nutzen Sie einfach das hadoop command-line tools zu kopieren/verschieben/Lesen von Dateien im HDFS, wobei jeder logische Pfad (in (HDFS), die Sie verwenden möchten. Diese Pfade in HDFS nicht gebunden werden müssen, um die Pfade, die Sie in Ihrem lokalen datanode-Speicher (es gibt keinen Grund oder Vorteil, dies zu tun).